与遥远的父母SBT多项目

时间:2019-01-22 14:38:07

标签: git sbt multi-module

我正在使用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版

1 个答案:

答案 0 :(得分:1)

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

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

了解如何使用此tutorial创建自己的插件。