我知道Gradle有一个很好的dependencies
任务,它列出了项目的所有依赖项。但是,它会在树列表中返回它们。
我想获得所有依赖项的列表,因为它们只是在一个平面列表中解析。与Maven依赖插件list
目标的行为类似。
答案 0 :(得分:11)
这是一项满足这种需求的简短任务:
task('dependenciesList') << {
println "Compile dependencies"
def selectedDeps = project.configurations.compile.incoming.resolutionResult.allDependencies.collect { dep ->
"${dep.selected}"
}
selectedDeps.unique().sort().each { println it}
}
第三行是有趣的部分。您需要获得您关心的(编译)配置,然后获取依赖关系,incoming.resolutionResult
将提供已解析的值和版本。
答案 1 :(得分:2)
你可以在linux或cygwin中使用sed | sort | uniq来展平deps树:
$ gradle dependencies | sed 's/^.* //' | sort | uniq
答案 2 :(得分:1)
感谢已经提供的答案。
最后,我以一种更标准的方式完成它:
project.gradle.addListener(new DependencyResolutionListener() {
@Override
void beforeResolve(ResolvableDependencies dependencies) {}
@Override
void afterResolve(ResolvableDependencies dependencies) {
dependencies.resolutionResult.allComponents.each { select ->
println "selected component: ${select} " + select.selectionReason
}
}
})
Project implementation
也将以这种方式解决,最终选择的组件版本将得到正确解决。