如何组织包含大量子模块的SBT?

如何组织包含大量子模块的SBT?,sbt,Sbt,我有一个相当大的SBT项目,有许多子模块。我的build.sbt相当大,很难导航。是否可以将build.sbt拆分为几个较小的部分,并在运行sbt作业时“组装”它们,就像在Maven中那样 假设我有这样的东西: lazy val commonSettings = Seq(...) lazy val lib1 = project.in(file(...))... lazy val lib2 = project.in(file(...))... lazy val lib3 = project.in

我有一个相当大的SBT项目,有许多子模块。我的
build.sbt
相当大,很难导航。是否可以将
build.sbt
拆分为几个较小的部分,并在运行sbt作业时“组装”它们,就像在Maven中那样

假设我有这样的东西:

lazy val commonSettings = Seq(...)

lazy val lib1 = project.in(file(...))...
lazy val lib2 = project.in(file(...))...
lazy val lib3 = project.in(file(...))...
lazy val lib4 = project.in(file(...))...
lazy val foo1 = project.in(file(...))...
lazy val foo2 = project.in(file(...))...
lazy val bar1 = project.in(file(...))...
lazy val bar2 = project.in(file(...))...
lazy val bar3 = project.in(file(...))...
我想要一个公共的
build.sbt
,它定义公共设置,并为
lib
foo
bar
创建单独的文件


这是可能的吗?如果是,如何实现?

您可以单独处理每个项目,并拥有自己的
build.sbt
。然后可以使用
ProjectRef
引用项目

我已经在上创建了一个示例项目


使用
ProjectRef
的好处在于,您可以使用
url
构造来定义对其他远程项目(例如github上的其他项目)的依赖关系

您可以单独处理每个项目,并拥有自己的
build.sbt
。然后可以使用
ProjectRef
引用项目

我已经在上创建了一个示例项目


使用
ProjectRef
的好处在于,您可以使用
url
构造来定义对其他远程项目(例如github上的其他项目)的依赖关系

一种方法是让所有项目都具有自己的
build.sbt
配置,然后从根项目中引用它们。我必须出去一个小时左右,但我回来后会补充一个适当的答案。一种方法是让所有项目都有自己的
build.sbt
配置,然后从根项目中引用它们。我必须出去一个小时左右,但我回来后会补充一个适当的答案。看起来很有希望。我如何处理所有项目共享的公共设置?这是一个好问题。我会用这个更新我的答案,但我想先让你同意这个想法。拥有公共设置的一种方法是将它们作为插件添加,然后在所有项目中包含相同的插件。这听起来太复杂了吗?在这期间,我会想点别的……看起来很有希望。我如何处理所有项目共享的公共设置?这是一个好问题。我会用这个更新我的答案,但我想先让你同意这个想法。拥有公共设置的一种方法是将它们作为插件添加,然后在所有项目中包含相同的插件。这听起来太复杂了吗?我会在这段时间里想点别的。。。