sbt多模块项目:项目之间的依赖

时间:2015-08-18 04:28:52

标签: scala sbt

我是Scala的新手,所以我希望这个问题不太天真。

假设我有一个multi-module sbt-project并且项目之间存在依赖关系。

  lazy val core = (project in file("core")).
    settings( ... )

  lazy val utils = (project in file("utils")).
    settings( ... ).dependsOn(core)

问题是.dependsOn(core)是否意味着,如果我projects utils; compile,它会事先compile core(并使用其最新版本)?

我问这个,因为在实践中我没有看到这种行为(我想要它)。

2 个答案:

答案 0 :(得分:2)

您正在寻找aggregate方法。像这样:

lazy val utils = (project in file("utils")).
  settings( ... ).dependsOn(core).aggregate(core)

此处的聚合方法会导致utils上运行的所有任务也在core上运行(更新等等)。如果要禁止在聚合项目上运行任务,可以查看the documentation here

答案 1 :(得分:2)

是的,你应该看到这种行为(我确实在实践中看到了它)。正如链接文档所述(请注意utilcore的角色相反:core取决于util):

  

这也会在编译项目时创建项目之间的顺序;必须在编译核心之前更新和编译util