首页 > 解决方案 > 与远亲的 SBT 多项目

问题描述

我正在使用 SBT 开发一个 Scala 项目,由于代码库对于一个项目/存储库来说变得过于繁重和复杂,我们将把它拆分并将模块推送到一个连接中以进行依赖项检索。

当前布局如下所示:

project-stack/ # Unique git repo
├── build.sbt # root
├── connector1_module/
│   └── build.sbt
├── connector2_module/
│   └── build.sbt
└── jobs_module/
    └── build.sbt

然而,我们在根构建中有很多公共信息,我们不想在所有项目和存储库中重复和维护(即依赖版本、sbt 插件和配置,...)。

新布局如下所示:

project-stack/ # Parent project repo
└── build.sbt # define all common properties

connector1_module/ # another git repo
└── build.sbt # inherit from project-stack

connector1_module/ # another git repo
└── build.sbt # inherit from project-stack

jobs_module/ # another git repo
└── build.sbt  # inherit from project-stack

我对 Maven 有一些经验,使用它我们会完成一个具有所有属性的父 POM,并让不同的项目继承它。SBT 是否支持从遥远的 SBT 项目继承类似的父信息?

我知道一种解决方案是保持整体结构并使用 git 子模块,但如果可能的话,我想避免复杂性。

谢谢

-- 编辑:
我正在使用 SBT 版本 1.1.6

标签: gitsbtmulti-module

解决方案


sbt 没有与 maven 对远方父母类似的方法。但与maven相比,sbt在编写自己的插件方面非常友好,可以依赖其他插件。

您可以创建一个单独的 sbt 插件,sbt-my-company-name即将您的根项目中的内容嵌入其中。它可以包含常见的 3rd-party 插件并以特定方式启用它们。您也可以对常见的库依赖项进行编码。

查看如何使用本教程创建自己的插件。


推荐阅读