【发布时间】:2015-07-29 01:12:00
【问题描述】:
我想在 gradle 任务中获取所有依赖项(包括传递依赖项)的信息。
我试过代码:
class MyGradlePlugin implements Plugin<Project> {
void apply(Project project) {
project.afterEvaluate {
println " Project:" + project.name
project.configurations.each { conf ->
println " Configuration: ${conf.name}"
conf.allDependencies.each { dep ->
println " ${dep.group}:${dep.name}:${dep.version}"
}
}
}
}
}
但它只打印声明的,没有传递的。
这意味着,如果我的dependencies 是:
dependencies {
compile "com.google.guava:guava:18.0"
compile 'org.codehaus.groovy:groovy-all:2.3.11'
testCompile 'junit:junit:4.11'
}
它只打印这3个依赖项,但org.hamcrest:hamcrest-core:1.3是junit:junit:4.11的传递依赖项却没有显示出来。
如何修改代码让它也显示org.hamcrest:hamcrest-core:1.3?
PS:我知道gradle dependencies 任务会显示我想要的一切,但我需要手动获取依赖信息并以我自己的格式打印。
【问题讨论】:
-
您需要解决依赖关系,例如
project.configurations.detachedConfiguration(deps as Dependency[]).resolvedConfiguration。有关示例,请参见 gradle-versions-plugin。 -
这很好,我有同样的问题,答案对我有帮助,知道我们怎么知道层次结构?表示哪个工件及其父级(如果有的话)?
标签: plugins gradle dependencies task transitive-dependency