我正在使用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版
答案 0 :(得分:1)
sbt与maven对于远距离父级没有类似的方法。但是与maven相比,sbt在编写可以依赖其他插件的自己的插件方面非常友好。
您可以创建一个单独的sbt插件,即sbt-my-company-name
并将其嵌入到您的根项目中。它可以包含常见的第三方插件并以特定方式启用它们。您也可以编码公共库依赖项。
了解如何使用此tutorial创建自己的插件。