SBT 与远亲的多项目

SBT multi project with distant parent

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

当前布局如下所示:

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

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

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

查看如何使用此 tutorial.

创建您自己的插件