繁体   English   中英

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

[英]Is it possible to create a hierarchical multi-project build with sbt?

我知道以前曾经问过这个问题但是所有这些问题都被删除了或者没有得到满意的答案,所以我再问一遍:

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

root
  foo
    foofoo
    foobar
  bar
    barfoo
    barbar

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

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

如果可以,它是如何完成的?

您可以通过配置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)

请参阅: https//www.scala-sbt.org/0.13/docs/Multi-Project.html#Default+root+project

你可以在sub-dirs下定义多个sbt文件,并使用root sbt来包含它们。 他们将自动合并为一个大的sbt运行。

foo中的任何.sbt文件,比如foo / build.sbt,都将与整个构建的构建定义合并,但是作用于hello-foo项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM