【问题标题】:Access submodule dependencies from root in multi-module Gradle build在多模块 Gradle 构建中从根访问子模块依赖项
【发布时间】:2014-05-05 20:42:28
【问题描述】:

在根build.gradle 中有没有办法访问子项目build.gradle 文件中声明的依赖项?我尝试了以下方法--

subprojects.each { p ->
  println "subproject: ${p.name}"
  p.configurations.each { c ->
    println "  ${c}"
    c.dependencies.each { d ->
      println "    ${d}"
    }
  }
}

但我猜是因为根build.gradle 首先被执行,子模块依赖声明还没有运行,因为我得到的是:

subproject: foo
subproject: bar
subproject: baz

(我正在尝试编写一个多模块 build.gradle 来构建一堆相关模块,这些模块不知道它们是多模块项目的一部分,或者可以是许多不同的多模块的一部分proejcts. 我的计划是以编程方式遍历子模块依赖项,并为每个依赖项添加一个相应的project 依赖项——希望做一些类似于Pieter Niederweiserelastic-deps 示例但不必修改子项目构建文件的事情。在单模块项目中,Gradle 似乎足够聪明,可以使用项目依赖项来解决 Maven/Ivy 依赖项,如果它们重叠的话。)


ETA:如果有办法在顶层声明所有子项目将在某个时间点运行的代码块他们已经声明了他们的依赖关系,那可能会这样做。

【问题讨论】:

    标签: gradle dependencies multi-module


    【解决方案1】:

    如果有办法在顶层声明一个代码块,所有子项目将在它们声明其依赖项后的某个时间点运行,那可能会这样做。

    evaluationDependsOnChildren() 可以解决问题。此方法调用之后的所有代码都将在评估子项目后进行评估。

    【讨论】:

    • 谢谢,成功了。我将我想出的 hack 添加为 this answer,如果您有时间,我会对您的反馈感兴趣。
    【解决方案2】:
    猜你喜欢
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2020-06-26
    • 2015-01-23
    相关资源
    最近更新 更多