我有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
....
如果没有这样的机制或插件:
答案 0 :(得分:0)
实际上,根项目build.sbt
包含有关dependsOn()
和aggregate()
的所有信息。
您不需要将子项目的build.sbt
依赖项配置为其他模块。
要将模块作为独立实体运行,您只需使用提供的project subModule
函数即可。 SBT将查看根项目依赖项并重建本地依赖项。