是否可以使用 sbt 创建分层多项目构建?

rab*_*ens 5 scala sbt

我知道以前曾有人问过这个问题,但所有这些问题要么被删除,要么没有令人满意的答案,所以我再问一次:

在 SBT 构建中,是否可以以分层方式安排和定义子项目?例如:

root
  foo
    foofoo
    foobar
  bar
    barfoo
    barbar
Run Code Online (Sandbox Code Playgroud)

其中每个项目都有自己的build.sbt设置,但从其顶级(聚合器)项目继承设置(因此foofoofoobar从 继承设置foofoo从 继承设置root)?

Maven 有这种可能性,但是交叉构建非常痛苦,所以我想使用 SBT。

如果可以做到的话,是如何做到的呢?

obl*_*ion 3

您可以通过配置root project. 在您的情况下, 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)
Run Code Online (Sandbox Code Playgroud)