Scala 不能使用子项目';是否自动按顺序构建子项目?[多项目构建] 现状

Scala 不能使用子项目';是否自动按顺序构建子项目?[多项目构建] 现状,scala,build,dependencies,sbt,multi-project,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 = proje

对于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做我想做的事情吗?有什么提示吗

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

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


要作为独立实体运行模块,只需使用提供的
项目子模块
功能。SBT将查看根项目依赖项并重建本地依赖项。

您可以在:Thx处看到一个poc,用于回答。如果我理解正确的话,这只是我使用的方式,但不是我认为应该使用的方式。因为我的大多数项目都是独立于应用程序的,所以它们可能被用作多个其他应用程序的依赖项。因此,他们应该自己照顾自己的依赖关系。但我需要一种按顺序构建所有项目的方法,这将是多个项目构建。但是对于多个项目构建,我必须再次指定依赖项。我认为多个项目构建应该读取所有project的build.sbt文件,并从中获取依赖项和构建顺序。我同意你的观点,我想应该存在一个适当的机制,但我找不到它。然而,这种解决方法避免了sbt不支持的循环依赖性。Ps:为了使之成为可能,我想您需要禁用项目的延迟加载。