我知道之前已经问过这个问题,但是所有这些问题都已删除或者没有得到满意的答案,所以我再次提出问题:
在SBT构建中,是否可以以分层方式安排和定义子项目? e.g:
root
foo
foofoo
foobar
bar
barfoo
barbar
其中每个项目都有自己的build.sbt
,但从其顶级(聚合器)项目继承设置(因此foofoo
和foobar
继承foo
和{{{ 1}}从foo
)继承设置?
Maven有这种可能性,但是对于这个问题,交叉构建非常痛苦,所以我想使用SBT。
如果可以,它是如何完成的?
答案 0 :(得分:2)
您可以通过配置root project
的 build.sbt 来实现此目的。在您的情况下, build.sbt 看起来如下所示:
lazy val root = (project in file(".")).enablePlugins(PlayScala) //assuming its a play scala project
lazy val foo = project.in(file("<path-to-foo-project>")).dependsOn(root)
lazy val bar = project.in(file("<path-to-bar-project>")).dependsOn(root)
lazy val foofoo = project.in(file("<path-to-foofoo-project>")).dependsOn(foo)
lazy val foobar = project.in(file("<path-to-foobar-project>")).dependsOn(foo)
lazy val barfoo = project.in(file("<path-to-barfoo-project>")).dependsOn(bar)
lazy val barbar = project.in(file("<path-to-barbar-project>")).dependsOn(bar)
答案 1 :(得分:0)
请参阅:https://www.scala-sbt.org/0.13/docs/Multi-Project.html#Default+root+project
您可以在子目录下定义多个sbt文件,并使用root sbt包含它们。它们将自动合并为一个大型sbt以运行。
foo中的任何.sbt文件(例如foo / build.sbt)将与 整个构建的构建定义,但范围为hello-foo 项目。