gradle - 在多模块 Gradle 构建中从根访问子模块依赖项

标签 gradle dependencies multi-module

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

预计到达时间:如果有一种方法可以在顶层声明所有子项目在声明其依赖项后的某个时间点将运行的代码块,那可能会这样做。

最佳答案

If there's a way to declare at the top level a block of code that all subprojects will run at some point after they've declared their dependencies, that might do it.


evaluationDependsOnChildren()成功了。此方法调用之后的所有代码都将在评估子项目后评估。

关于gradle - 在多模块 Gradle 构建中从根访问子模块依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481476/

相关文章:

android - 我如何从Library Project Android Studio获得 yield

gradle - 如何获取将哪个依赖项和依赖项版本打包到gradle构建文件中的war文件中?

unit-testing - 在多模块项目中,maven 模块可以访问它所依赖的另一个模块的传递测试范围依赖项吗?

gradle - 如何使用 gradle 在特定子模块上执行多个任务?

scala - 如何在多模块 gradle 项目中仅编译已更改(或相关)的模块

android - 如何在不花这么长时间的情况下运行flutter应用程序?

gradle - 将多个目录的内容复制到一个目录中

rust - 使用嵌套Cargo.toml项目的Rust子软件包

java - Maven 不会下载外部项目所需的依赖项

dependencies - 没有自己目录的gradle子项目