我们有一个多项目构建,在settings.gradle中的“包含”项目之间具有项目内依赖关系。各个项目之间存在许多相互依存关系,表示为项目依存关系列表中适当大小的项目依存关系。
尽管此方法在其他几个多项目构建中都可以正常工作,但在此特定项目中,不遵守项目依赖关系,因此子项目的构建顺序错误,构建失败。
那么,对于初学者来说,我们如何诊断这里发生的情况以确定它是否是错误?
我们正在运行:
Gradle(包装器)版本:3.1
操作系统:Windows 8.1 6.3 amd64
JDK:Oracle 1.8.0_65
因此-我们最终确定问题出在这里-configuration.all块中存在代码,该代码对各种依赖项设置了useVersion。如果这些依赖项之一恰好是项目依赖项,则该项目依赖项将被破坏。
最佳答案
如果不查看build.gradle
的相关摘要,以及不满意的项目如何相互包含的概述,很难回答。这是几个可能的候选人
有时一个项目的评估取决于另一个项目的评估,在这种情况下,您可以使用evaluationDependsOn
project(':projectA') {
evaluationDependsOn(':projectB')
}
project(':projectB') {
project(':projectA').tasks.create(...)
}
如果项目依赖项之间存在循环引用,则可以通过添加额外的配置来打破循环
project(':projectA') {
configurations {
base
compile.extendsFrom base
}
dependencies {
base 'aaa:bbb:1.0'
compile project(path: ':projectB', configuration: 'base')
}
}
project(':projectB') {
configurations {
base
compile.extendsFrom base
}
dependencies {
base 'ccc:ddd:1.0'
compile project(path: ':projectA', configuration: 'base')
}
}
关于java - Gradle似乎忽略了项目依赖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40111929/