根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
来构建一堆相关模块,这些模块不知道它们是多模块项目的一部分,或者可以是许多不同的多模块的一部分-module proejcts。我的计划是以编程方式遍历子模块依赖项并为每个依赖项添加相应的project
依赖项 - 希望做一些类似Pieter Niederweiser的elastic-deps示例的事情但是无需修改子项目构建文件。在单模块项目中,似乎Gradle足够聪明,可以使用项目依赖项来解析Maven / Ivy依赖项(如果它们重叠)。)
ETA:如果有一种方法可以在顶级声明一个代码块,所有子项目将在之后的某个时刻运行他们已经声明了它们的依赖关系,可能会这样做。
答案 0 :(得分:2)
如果有一种方法可以在顶层声明一个代码块,所有子项目在他们声明了它们的依赖关系之后会在某个时刻运行,那可能会这样做。
evaluationDependsOnChildren()
可以解决问题。在评估子项目之后,将评估此方法调用之后的所有代码。
答案 1 :(得分:0)
从Gradle 3.2开始,您只需调用ResolutionStrategy#preferProjectModules
。
https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html#org.gradle.api.artifacts.ResolutionStrategy:preferProjectModules()