【问题标题】:Gradle seems to ignore project dependenciesGradle 似乎忽略了项目依赖项
【发布时间】:2016-10-23 23:16:01
【问题描述】:

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

虽然这种方法在其他几个多项目构建中运行良好,但在这个特定项目中,项目依赖关系没有得到尊重,因此子项目以错误的顺序构建并且构建失败。

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

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


所以——我们最终确定问题出在这个——configurations.all 块中有代码在各种依赖项上设置 useVersion。如果这些依赖项之一恰好是项目依赖项,则项目依赖项已损坏。

【问题讨论】:

  • 您能否在您的build.gradle 文件中发布您的settings.gradle 和任何相关配置?

标签: java gradle dependencies subproject


【解决方案1】:

如果没有看到 build.gradle 的相关 sn-ps 以及对违规项目如何相互包含的概述,很难回答。这里有几个可能的候选人

有时一个项目的评估取决于另一个项目的评估,在这种情况下,您可以使用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')
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2023-02-03
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多