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

标签 plugins gradle dependencies task transitive-dependency

我想在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/

相关文章:

c++ - Qt 自定义插件无法加载 - "Shared Library Not Found"

android - Android Gradle-更新后出现多个错误

android - 将 IntelliJ 项目导入 Android Studio

android - 未能解密安全内容条目 : java. io.IOException:getSecretKey 失败:密码不是 ASCII

php - 无法为 PHP7 (CentOS) 安装 php-xml

java - 如何用库依赖链来分发Java应用程序?

wordpress - 如何检查Wordpress插件的安装日期和时间

grails - Grails插件安装遇到麻烦

javascript - 一页上有多个 jQuery

haskell - 如何列出 Cabal 计算的依赖项