SBT可以使用子项目'依赖conf会自动按顺序构建子项目吗? [多项目建设]

时间:2014-07-06 09:29:19

标签: scala build dependencies sbt multi-project

现状

我有scala项目的以下目录结构:

~/development/projects/projectA
~/development/projects/projectB
~/development/projects/projectC
...

我编写了一个sbt构建定义来构建根项目中的所有项目:

~/development/projects/build.sbt

该文件包含每个项目的条目:

lazy val projectA = project

lazy val projectB = project.dependsOn(projectB)
...

每次我添加项目或更改项目之间的依赖项时,我都必须更新此文件。

目标

我认为没有必要手动执行此操作。每个项目都包含一个build.sbt文件,其中配置了项目的依赖项。

因此,sbt已经了解所有依赖项,并且根项目应该能够轻松找到所有项目,因为它们位于包含build.sbt文件的子目录中。

是否有现有的机制或插件可以自动获取所有项目,分析它们的依赖关系并按顺序构建它们?

如果它可以处理递归子项目目录结构,那将是完美的:

~/development/projects/domainA/projectA
~/development/projects/domainA/projectA
~/development/projects/domainB/projectC
~/development/projects/domainB/projectD
....

如果没有这样的机制或插件:

  • 也许我错过了一些东西。其他人如何建立多个相互依存项目?
  • 我应该自己写一个任务或插件来做我想做的事吗?对此有何提示?

1 个答案:

答案 0 :(得分:0)

实际上,根项目build.sbt包含有关dependsOn()aggregate()的所有信息。

您不需要将子项目的build.sbt依赖项配置为其他模块。

要将模块作为独立实体运行,您只需使用提供的project subModule函数即可。 SBT将查看根项目依赖项并重建本地依赖项。