gpt4 book ai didi

plugins - 如何在gradle任务中获取传递依赖项的信息?

转载 作者:行者123 更新时间:2023-12-04 19:03:47 25 4
gpt4 key购买 nike

我想在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任务将显示我想要的所有内容,但是我需要手动获取依赖项信息并以我自己的格式打印它。

最佳答案

最后,我通过关注任务来解决

class Dep {
String group
String name
String version
String extention
String classifier

Dep(String group, String name, String version, String extension, String classifier) {
this.group = group
this.name = name
this.version = version
this.extention = extension
this.classifier = classifier
}

}

任务collectAllDeps {
def deps = []
configurations.each {
conf ->
if (conf.isCanBeResolved()) {
conf.getResolvedConfiguration().getResolvedArtifacts().each {
at ->
def dep = at.getModuleVersion().getId()
println at.getFile().getAbsolutePath()
// dep = dep1.getComponentIdentifier()
println "$dep.group:$dep.name:$dep.version"
deps.add(new Dep(dep.group, dep.name, dep.version, at.extension, at.classifier))
}
}
}


def json = groovy.json.JsonOutput.toJson(deps)
json = groovy.json.JsonOutput.prettyPrint(json)

new File("deps.json") << json

}

关于plugins - 如何在gradle任务中获取传递依赖项的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30287826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com