1

现在的情况

对于 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
....

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

  • 也许我误会了什么。其他人如何构建多个相互依赖的项目?
  • 我应该自己写一个任务或插件来让 sbt 做我想做的事吗?对此有任何提示吗?
4

1 回答 1

0

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

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

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

于 2015-02-17T22:50:13.363 回答