繁体   English   中英

Gradle似乎忽略了项目依赖

[英]Gradle seems to ignore project dependencies

我们有一个多项目构建,在settings.gradle中的“包含”项目之间具有项目内依赖关系。 各个项目之间存在许多相互依赖关系,这些相互依赖关系表示为适当大小的项目依赖关系列表中包含的项目依赖关系。

尽管此方法在其他几个多项目构建中效果很好,但在此特定项目中,不遵守项目依赖关系,因此子项目的构建顺序错误,构建失败。

那么,对于初学者来说,我们如何诊断这里发生的情况以确定它是否是错误?

我们正在运行:Gradle(Wrapper)版本:3.1操作系统:Windows 8.1 6.3 amd64 JDK:Oracle 1.8.0_65


因此-我们最终确定问题出在这里-configuration.all块中存在代码,该代码在各种依赖项上设置了useVersion。 如果这些依赖项之一恰好是项目依赖项,则该项目依赖项将被破坏。

如果不查看build.gradle的相关代码片段,以及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')
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM