我在 gradle 中陷入了传递依赖注入(inject)的困境。我有以下结构:
A/
build.gradle.kts
settings.gradle.kts
B/
build.gradle.kts
settings.gradle.kts
C/
build.gradle.kts
- A 依赖于项目 B。
- A 公寓包括 B
- B 包括 C
- A 和 B 位于不同的存储库中,因此它们没有共同的根。
当我构建 A 时,出现以下错误:
* Where:
Build file '/.../B/build.gradle.kts' line: 7
* What went wrong:
Project with path 'C' could not be found in project ':B'.
我应该在 A/settings.gradle.kts
中放入什么才能使其正常工作?
这是重现我的问题的所有文件:
A/build.gradle.kts
plugins { `java-library` }
dependencies { api(project("B")) }
A/settings.gradle.kts
rootProject.name = "A"
includeFlat("B")
B/build.gradle.kts
plugins { `java-library` }
dependencies { api(project("C")) }
B/settings.gradle.kts
rootProject.name = "C"
include("C")
B/C/build.gradle.kts
plugins { `java-library` }
dependencies { }
这是在 B 中列出项目的输出
B/# gradle -q projects
------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'B'
\--- Project ':C'
最佳答案
你可以尝试这样的事情:
A/settings.gradle.kts
rootProject.name = "A"
include("B", "B:C")
project(":B").projectDir = File(settingsDir, "../B")
project(":B:C").projectDir = File(settingsDir, "../B/C")
结果
关于java - Flat 的子项目包含在 gradle 中未找到的多项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55020594/