我正在尝试创建一个多项目sbt构建。我想在顶层拥有一个根build.sbt
,并在每个项目中拥有一个单独的build.sbt
,以便顶层包含通用设置,而各个项目build.sbt
的文件则是项目特定的。 / p>
从理论上讲,如果sbt正确合并build.sbt
文件并确定其范围,这应该是可能的。根据文档,它确实:
摘自https://www.scala-sbt.org/1.x/docs/Multi-Project.html的sbt手册:
默认的根项目
如果未在构建中的根目录中定义项目,则sbt将创建一个默认项目,该项目将聚合构建中的所有其他项目。
因为项目hello-foo是使用base = file(“ foo”)定义的,所以它将包含在子目录foo中。它的源可以直接在foo下,例如foo / Foo.scala,或在foo / src / main / scala中。除构建定义文件外,通常的sbt目录结构都适用于foo。
foo中的任何.sbt文件(例如foo / build.sbt)将与整个构建的构建定义合并,但范围仅限于hello-foo项目。
但这对我没有用。 sbt不尊重我项目的dependsOn
结构,说找不到依赖项。
我对此的解释是,如果我具有像这样的根级别build.sbt
:
lazy val common = project.settings(AAA)
如果在普通项目中,我还有另一个build.sbt
,如下所示:
lazy val common = (project in file(".")).settings(BBB)
该sbt应合并两个设置AAA和BBB。我在这里误会了吗?