我处理一个大型项目(数百个模块,每个模块都有测试),并希望使用gradle依赖项构建测试依赖图。
例如,假设我有以下模块和依赖项:
core <----- thing1 <----- thing1a
<----- thing2
如果我运行gradle thing1:dependencies
,它会告诉我thing1
dependsOn core
。相反,我想知道哪些模块依赖thing1
,所以每当我更改thing1
时,我都可以运行thing1和所有相关模块的测试。在上面的示例中,依赖模块将是thing1
和thing1a
希望有一种简单的方法可以在gradle中执行此操作(构建测试依赖关系图似乎很常见),但我还没有找到任何东西。
答案 0 :(得分:1)
使用this gist(我没有写过)作为灵感,请在根build.gradle
中考虑这一点:
subprojects { subproject ->
task dependencyReport {
doLast {
def target = subproject.name
println "-> ${target}"
rootProject.childProjects.each { item ->
def from = item.value
from.configurations
.compile
.dependencies
.matching { it in ProjectDependency }
.each { to ->
if (to.name == target) {
println "-> ${from.name}"
}
}
}
}
}
}
使用您描述的项目结构运行示例:
$ gradle thing1:dependencyReport
:thing1:dependencyReport
-> thing1
-> thing1a