Gradle 有没有办法以编程方式列出所有渐变依赖项?

Gradle 有没有办法以编程方式列出所有渐变依赖项?,gradle,groovy,dependencies,Gradle,Groovy,Dependencies,我知道这样做: gradle dependencies 列出完整的依赖关系树。现在,我正在寻找一种以编程方式操纵依赖关系树的方法,以便可以打印相同的层次结构,但使用JSON,而不是gradle cli现在在控制台中使用的格式 我应该使用哪些groovy类来实现这一点 已编辑 我希望(在JSON中)获得如下内容: "dependencies" : [ { "groupId" : "com.something", "artifactId" : "somethingArtifac

我知道这样做:

gradle dependencies
列出完整的依赖关系树。现在,我正在寻找一种以编程方式操纵依赖关系树的方法,以便可以打印相同的层次结构,但使用JSON,而不是gradle cli现在在控制台中使用的格式

我应该使用哪些groovy类来实现这一点

已编辑

我希望(在JSON中)获得如下内容:

"dependencies" : [
  {
    "groupId" : "com.something",
    "artifactId" : "somethingArtifact",
    "version" : "1.0",
    "dependencies" : [
      "groupId" : "com.leaf",
      "artifactId" : "standaloneArtifact",
      "version" : "2.0",
    ]
  },
  {
    "groupId" : "com.leaf",
    "artifactId" : "anotherStandaloneArtifact",
    "version" : "1.0",
    "dependencies" : []
  }
]
{"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.jboss.logging:jboss-logging:3.3.0.Final"}
正如您在这里看到的那样,我知道哪个依赖关系依赖于哪些其他依赖关系。最简单的方法可能是编写自己的
DependencyReportRenderer
实现,然后配置现有的
依赖关系
任务来使用它,或者定义一个类型为
DependencyReportTask
的新任务,并配置您自己的渲染器。

您可以在Gradle文件中创建一个任务,以迭代所有依赖项并生成您认为合适的JSON。下面是一个示例任务,它将为您漂亮地打印JSON:

task printDependencies << {
    def json = '"dependencies": ['

    configurations.runtime.resolvedConfiguration.resolvedArtifacts.each { artifact ->
        def id = artifact.moduleVersion.id
       // println "group: ${id.group}, name: ${id.name}, version: ${id.version}"
        json += JsonOutput.toJson(id)
    }

    json += "]"
    json = JsonOutput.prettyPrint(json)
    println json
}

大家好,这就是为什么我最终归档了我需要的东西,希望对你们其他人有用

首先,我要感谢“pczeus”和“Björn Kautler”的回答,他们的回答帮助我找到了这个解决方案

这就是我解决问题的方法:

鉴于此build.gradle:

apply plugin:'java' repositories { jcenter() } dependencies { compile 'org.javassist:javassist:3.13.0-GA' compile 'org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1' compile 'org.hibernate:hibernate-core:5.1.0.Final' compile 'org.springframework:spring-web:4.2.5.RELEASE' } 应用插件:'java' 存储库{ jcenter() } 依赖关系{ 编译“org.javassist:javassist:3.13.0-GA” 编译'org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1' 编译“org.hibernate:hibernate核心:5.1.0.Final” 编译“org.springframework:springweb:4.2.5.RELEASE” } 如果您这样做:

gradle -b build.gradle dependencies --configuration=compile gradle-b build.gradle依赖项--配置=编译 您将在控制台中获得以下输出:

:dependencies ------------------------------------------------------------ Root project ------------------------------------------------------------ compile - Compile classpath for source set 'main'. +--- org.javassist:javassist:3.13.0-GA -> 3.20.0-GA +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 +--- org.hibernate:hibernate-core:5.1.0.Final | +--- org.jboss.logging:jboss-logging:3.3.0.Final | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final | +--- org.javassist:javassist:3.20.0-GA | +--- antlr:antlr:2.7.7 | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 | +--- org.jboss:jandex:2.0.0.Final | +--- com.fasterxml:classmate:1.3.0 | +--- dom4j:dom4j:1.6.1 | | \--- xml-apis:xml-apis:1.0.b2 | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final | \--- org.jboss.logging:jboss-logging:3.3.0.Final \--- org.springframework:spring-web:4.2.5.RELEASE +--- org.springframework:spring-aop:4.2.5.RELEASE | +--- aopalliance:aopalliance:1.0 | +--- org.springframework:spring-beans:4.2.5.RELEASE | | \--- org.springframework:spring-core:4.2.5.RELEASE | | \--- commons-logging:commons-logging:1.2 | \--- org.springframework:spring-core:4.2.5.RELEASE (*) +--- org.springframework:spring-beans:4.2.5.RELEASE (*) +--- org.springframework:spring-context:4.2.5.RELEASE | +--- org.springframework:spring-aop:4.2.5.RELEASE (*) | +--- org.springframework:spring-beans:4.2.5.RELEASE (*) | +--- org.springframework:spring-core:4.2.5.RELEASE (*) | \--- org.springframework:spring-expression:4.2.5.RELEASE | \--- org.springframework:spring-core:4.2.5.RELEASE (*) \--- org.springframework:spring-core:4.2.5.RELEASE (*) (*) - dependencies omitted (listed previously) :依赖项 ------------------------------------------------------------ 根项目 ------------------------------------------------------------ 编译-编译源集“main”的类路径。 +---org.javassist:javassist:3.13.0-GA->3.20.0-GA +---规范:geronimo-jta_1.1_规范:1.1.1 +---org.hibernate:hibernate核心:5.1.0.Final |+---org.jboss.logging:jboss logging:3.3.0.Final |+---org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final |+---org.javassist:javassist:3.20.0-GA |+---antlr:antlr:2.7.7 |+---org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 |+---org.jboss:jandex:2.0.0.Final |+---com.fasterxml:同学:1.3.0 |+---dom4j:dom4j:1.6.1 |\---xml API:xml API:1.0.b2 |\---org.hibernate.common:hibernate commons注释:5.0.1.Final |\---org.jboss.logging:jboss logging:3.3.0.Final \---org.springframework:springweb:4.2.5.RELEASE +---org.springframework:springaop:4.2.5.RELEASE |+--aopalliance:aopalliance:1.0 |+---org.springframework:springbean:4.2.5.RELEASE || \--org.springframework:springcore:4.2.5.RELEASE || \---公用记录:公用记录:1.2 |\---org.springframework:spring核心:4.2.5.RELEASE(*) +---org.springframework:springbean:4.2.5.RELEASE(*) +---org.springframework:spring上下文:4.2.5.RELEASE |+---org.springframework:springaop:4.2.5.RELEASE(*) |+---org.springframework:springbean:4.2.5.RELEASE(*) |+---org.springframework:spring核心:4.2.5.RELEASE(*) |\---org.springframework:spring表达式:4.2.5.RELEASE |\---org.springframework:spring核心:4.2.5.RELEASE(*) \---org.springframework:spring核心:4.2.5.RELEASE(*) (*)-省略依赖项(前面列出) 我想要的是获得一个相同的“依赖树”,但JSON格式。这就是我为此创建的“任务”:

task printSolvedDepsTreeInJson { doLast { def jsonOutput = "[" configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.each { dep -> def addToJson addToJson = { resolvedDep -> jsonOutput += "\n{" jsonOutput += "\"groupId\":\"${resolvedDep.module.id.group}\",\"artifactId\":\"${resolvedDep.module.id.name}\",\"version\":\"${resolvedDep.module.id.version}\",\"file\":\"${resolvedDep.getModuleArtifacts()[0].file}\"" jsonOutput += ",\"dependencies\":[" if(resolvedDep.children.size()!=0){ resolvedDep.children.each { childResolvedDep -> if(resolvedDep in childResolvedDep.getParents() && childResolvedDep.getConfiguration() == 'compile'){ addToJson(childResolvedDep) } } if(jsonOutput[-1] == ','){ jsonOutput = jsonOutput[0..-2] } } jsonOutput += "]}," } addToJson(dep) } if(jsonOutput[-1] == ','){ jsonOutput = jsonOutput[0..-2] } jsonOutput += "]" println jsonOutput } } 任务printSolvedDepsTreeInJson{ 多拉斯特{ def jsonOutput=“[” configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.each{dep-> def addToJson addToJson={resolvedDep-> jsonOutput+=“\n{” jsonOutput+=“\'groupId\”:“${resolvedDep.module.id.group}\”,“'artifactId\”:\“${resolvedDep.module.id.name}\”,“version\”:“${resolvedDep.module.id.version}\”,“file\”:“${resolvedDep getModuleArtifacts()[0]。file}\” jsonOutput+=“,\“依赖项\:[” if(resolvedep.children.size()!=0){ resolvedep.children.each{childresolvedep-> if(childresolvedep.getParents()和&childresolvedep.getConfiguration()中的resolvedep=='compile'){ addToJson(childResolvedDep) } } 如果(jsonOutput[-1]==','){ jsonOutput=jsonOutput[0..-2] } } jsonOutput+=“]},” } addToJson(dep) } 如果(jsonOutput[-1]==','){ jsonOutput=jsonOutput[0..-2] } jsonOutput+=“]” println jsonOutput } } 如果您运行此任务:

gradle -b build.gradle printSolvedDepsTreeInJson gradle-b build.gradle printSolvedDepsTreeInJson 您将得到以下结果:

[ { "groupId": "org.apache.geronimo.specs", "artifactId": "geronimo-jta_1.1_spec", "version": "1.1.1", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1/aabab3165b8ea936b9360abbf448459c0d04a5a4/geronimo-jta_1.1_spec-1.1.1.jar", "dependencies": [] }, { "groupId": "org.hibernate", "artifactId": "hibernate-core", "version": "5.1.0.Final", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.hibernate/hibernate-core/5.1.0.Final/1b5ac619df76cfd67222ca7cddcee6b0a5db8d0c/hibernate-core-5.1.0.Final.jar", "dependencies": [ { "groupId": "org.jboss.logging", "artifactId": "jboss-logging", "version": "3.3.0.Final", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.jboss.logging/jboss-logging/3.3.0.Final/3616bb87707910296e2c195dc016287080bba5af/jboss-logging-3.3.0.Final.jar", "dependencies": [] }, { "groupId": "org.hibernate.javax.persistence", "artifactId": "hibernate-jpa-2.1-api", "version": "1.0.0.Final", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.hibernate.javax.persistence/hibernate-jpa-2.1-api/1.0.0.Final/5e731d961297e5a07290bfaf3db1fbc8bbbf405a/hibernate-jpa-2.1-api-1.0.0.Final.jar", "dependencies": [] }, { "groupId": "antlr", "artifactId": "antlr", "version": "2.7.7", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/antlr/antlr/2.7.7/83cd2cd674a217ade95a4bb83a8a14f351f48bd0/antlr-2.7.7.jar", "dependencies": [] }, { "groupId": "org.apache.geronimo.specs", "artifactId": "geronimo-jta_1.1_spec", "version": "1.1.1", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1/aabab3165b8ea936b9360abbf448459c0d04a5a4/geronimo-jta_1.1_spec-1.1.1.jar", "dependencies": [] }, { "groupId": "org.jboss", "artifactId": "jandex", "version": "2.0.0.Final", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.jboss/jandex/2.0.0.Final/3e899258936f94649c777193e1be846387ed54b3/jandex-2.0.0.Final.jar", "dependencies": [] }, { "groupId": "com.fasterxml", "artifactId": "classmate", "version": "1.3.0", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/com.fasterxml/classmate/1.3.0/183407ff982e9375f1a1c4a51ed0a9307c598fc7/classmate-1.3.0.jar", "dependencies": [] }, { "groupId": "dom4j", "artifactId": "dom4j", "version": "1.6.1", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/dom4j/dom4j/1.6.1/5d3ccc056b6f056dbf0dddfdf43894b9065a8f94/dom4j-1.6.1.jar", "dependencies": [ { "groupId": "xml-apis", "artifactId": "xml-apis", "version": "1.0.b2", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/xml-apis/xml-apis/1.0.b2/3136ca936f64c9d68529f048c2618bd356bf85c9/xml-apis-1.0.b2.jar", "dependencies": [] }] }, { "groupId": "org.hibernate.common", "artifactId": "hibernate-commons-annotations", "version": "5.0.1.Final", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.hibernate.common/hibernate-commons-annotations/5.0.1.Final/71e1cff3fcb20d3b3af4f3363c3ddb24d33c6879/hibernate-commons-annotations-5.0.1.Final.jar", "dependencies": [ { "groupId": "org.jboss.logging", "artifactId": "jboss-logging", "version": "3.3.0.Final", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.jboss.logging/jboss-logging/3.3.0.Final/3616bb87707910296e2c195dc016287080bba5af/jboss-logging-3.3.0.Final.jar", "dependencies": [] }] }, { "groupId": "org.javassist", "artifactId": "javassist", "version": "3.20.0-GA", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.javassist/javassist/3.20.0-GA/a9cbcdfb7e9f86fbc74d3afae65f2248bfbf82a0/javassist-3.20.0-GA.jar", "dependencies": [] }] }, { "groupId": "org.springframework", "artifactId": "spring-web", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-web/4.2.5.RELEASE/49cd2430884b77172aa81e3fc33ef668ea1dab30/spring-web-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "org.springframework", "artifactId": "spring-aop", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/4.2.5.RELEASE/858d6c70909b3ce7e07b59fc936f8ccfcd81c0aa/spring-aop-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "org.springframework", "artifactId": "spring-beans", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/4.2.5.RELEASE/fa992ae40f6fc47117282164e0433b71da385e94/spring-beans-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "org.springframework", "artifactId": "spring-core", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.2.5.RELEASE/251207b29f0f38f61e3495a2f7fb053cf1bfe8c/spring-core-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "commons-logging", "artifactId": "commons-logging", "version": "1.2", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar", "dependencies": [] }] }] }, { "groupId": "org.springframework", "artifactId": "spring-core", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.2.5.RELEASE/251207b29f0f38f61e3495a2f7fb053cf1bfe8c/spring-core-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "commons-logging", "artifactId": "commons-logging", "version": "1.2", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar", "dependencies": [] }] }, { "groupId": "aopalliance", "artifactId": "aopalliance", "version": "1.0", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/aopalliance/aopalliance/1.0/235ba8b489512805ac13a8f9ea77a1ca5ebe3e8/aopalliance-1.0.jar", "dependencies": [] }] }, { "groupId": "org.springframework", "artifactId": "spring-beans", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/4.2.5.RELEASE/fa992ae40f6fc47117282164e0433b71da385e94/spring-beans-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "org.springframework", "artifactId": "spring-core", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.2.5.RELEASE/251207b29f0f38f61e3495a2f7fb053cf1bfe8c/spring-core-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "commons-logging", "artifactId": "commons-logging", "version": "1.2", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar", "dependencies": [] }] }] }, { "groupId": "org.springframework", "artifactId": "spring-context", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/4.2.5.RELEASE/a75e18322c7b362fe1daa26a245ae672ec0f3138/spring-context-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "org.springframework", "artifactId": "spring-aop", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/4.2.5.RELEASE/858d6c70909b3ce7e07b59fc936f8ccfcd81c0aa/spring-aop-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "org.springframework", "artifactId": "spring-beans", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/4.2.5.RELEASE/fa992ae40f6fc47117282164e0433b71da385e94/spring-beans-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "org.springframework", "artifactId": "spring-core", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.2.5.RELEASE/251207b29f0f38f61e3495a2f7fb053cf1bfe8c/spring-core-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "commons-logging", "artifactId": "commons-logging", "version": "1.2", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar", "dependencies": [] }] }] }, { "groupId": "org.springframework", "artifactId": "spring-core", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.2.5.RELEASE/251207b29f0f38f61e3495a2f7fb053cf1bfe8c/spring-core-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "commons-logging", "artifactId": "commons-logging", "version": "1.2", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar", "dependencies": [] }] }, { "groupId": "aopalliance", "artifactId": "aopalliance", "version": "1.0", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/aopalliance/aopalliance/1.0/235ba8b489512805ac13a8f9ea77a1ca5ebe3e8/aopalliance-1.0.jar", "dependencies": [] }] }, { "groupId": "org.springframework", "artifactId": "spring-beans", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/4.2.5.RELEASE/fa992ae40f6fc47117282164e0433b71da385e94/spring-beans-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "org.springframework", "artifactId": "spring-core", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.2.5.RELEASE/251207b29f0f38f61e3495a2f7fb053cf1bfe8c/spring-core-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "commons-logging", "artifactId": "commons-logging", "version": "1.2", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar", "dependencies": [] }] }] }, { "groupId": "org.springframework", "artifactId": "spring-core", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.2.5.RELEASE/251207b29f0f38f61e3495a2f7fb053cf1bfe8c/spring-core-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "commons-logging", "artifactId": "commons-logging", "version": "1.2", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar", "dependencies": [] }] }, { "groupId": "org.springframework", "artifactId": "spring-expression", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-expression/4.2.5.RELEASE/a42bdfb833d0be6c18429aea3fb0fba81f85c6e8/spring-expression-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "org.springframework", "artifactId": "spring-core", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.2.5.RELEASE/251207b29f0f38f61e3495a2f7fb053cf1bfe8c/spring-core-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "commons-logging", "artifactId": "commons-logging", "version": "1.2", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar", "dependencies": [] }] }] }] }, { "groupId": "org.springframework", "artifactId": "spring-core", "version": "4.2.5.RELEASE", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.2.5.RELEASE/251207b29f0f38f61e3495a2f7fb053cf1bfe8c/spring-core-4.2.5.RELEASE.jar", "dependencies": [ { "groupId": "commons-logging", "artifactId": "commons-logging", "version": "1.2", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar", "dependencies": [] }] }] }, { "groupId": "org.javassist", "artifactId": "javassist", "version": "3.20.0-GA", "file": "/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.javassist/javassist/3.20.0-GA/a9cbcdfb7e9f86fbc74d3afae65f2248bfbf82a0/javassist-3.20.0-GA.jar", "dependencies": [] } ] :printDepsTreeInJson {"from":"project :","requested":"org.javassist:javassist:3.13.0-GA"} {"from":"project :","requested":"org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1"} {"from":"project :","requested":"org.hibernate:hibernate-core:5.1.0.Final"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.jboss.logging:jboss-logging:3.3.0.Final"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.javassist:javassist:3.20.0-GA"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"antlr:antlr:2.7.7"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.jboss:jandex:2.0.0.Final"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"com.fasterxml:classmate:1.3.0"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"dom4j:dom4j:1.6.1"} {"from":"dom4j:dom4j:1.6.1","requested":"xml-apis:xml-apis:1.0.b2"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.hibernate.common:hibernate-commons-annotations:5.0.1.Final"} {"from":"org.hibernate.common:hibernate-commons-annotations:5.0.1.Final","requested":"org.jboss.logging:jboss-logging:3.3.0.Final"} {"from":"project :","requested":"org.springframework:spring-web:4.2.5.RELEASE"} {"from":"org.springframework:spring-web:4.2.5.RELEASE","requested":"org.springframework:spring-aop:4.2.5.RELEASE"} {"from":"org.springframework:spring-aop:4.2.5.RELEASE","requested":"aopalliance:aopalliance:1.0"} {"from":"org.springframework:spring-aop:4.2.5.RELEASE","requested":"org.springframework:spring-beans:4.2.5.RELEASE"} {"from":"org.springframework:spring-beans:4.2.5.RELEASE","requested":"org.springframework:spring-core:4.2.5.RELEASE"} {"from":"org.springframework:spring-core:4.2.5.RELEASE","requested":"commons-logging:commons-logging:1.2"} {"from":"org.springframework:spring-aop:4.2.5.RELEASE","requested":"org.springframework:spring-core:4.2.5.RELEASE"} {"from":"org.springframework:spring-web:4.2.5.RELEASE","requested":"org.springframework:spring-beans:4.2.5.RELEASE"} {"from":"org.springframework:spring-web:4.2.5.RELEASE","requested":"org.springframework:spring-context:4.2.5.RELEASE"} {"from":"org.springframework:spring-context:4.2.5.RELEASE","requested":"org.springframework:spring-aop:4.2.5.RELEASE"} {"from":"org.springframework:spring-context:4.2.5.RELEASE","requested":"org.springframework:spring-beans:4.2.5.RELEASE"} {"from":"org.springframework:spring-context:4.2.5.RELEASE","requested":"org.springframework:spring-core:4.2.5.RELEASE"} {"from":"org.springframework:spring-context:4.2.5.RELEASE","requested":"org.springframework:spring-expression:4.2.5.RELEASE"} {"from":"org.springframework:spring-expression:4.2.5.RELEASE","requested":"org.springframework:spring-core:4.2.5.RELEASE"} {"from":"org.springframework:spring-web:4.2.5.RELEASE","requested":"org.springframework:spring-core:4.2.5.RELEASE"} [ { “groupId”:“org.apache.geronimo.specs”, “artifactId”:“geronimo-jta_1.1_规范”, “版本”:“1.1.1”, “文件”:“/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1/aabab3165b8ea936b9360abbf448489c0d04a5a4/geronimo-jta_1.1_spec-1.1.1.1.1.jar”, “依赖项”:[] }, { “groupId”:“org.hibernate”, “artifactId”:“休眠核心”, “版本”:“5.1.0.最终版”, “文件”:“/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.hibernate/hibernate-core/5.1.0.Final/1B5AC619DF76CFD6722CA7CDDCEE6B0A5DB8D0C/hibernate-core-5.1.0.Final.jar”, “依赖项”:[ { “groupId”:“org.jboss.logging”, “artifactId”:“jboss日志记录”, “版本”:“3.3.0.最终版”, “文件”:“/Users/cgadam/.gradle/caches/modules-2/files-2.1/org.jboss.logging/jboss logging/3.3.0.Final/3616bb87707910296e2c195dc016287080bba5af/jboss-logging-3.3.0.Final.jar”, “依赖项”:[] }, { “groupId”:“o org.javassist:javassist:3.20.0-GA org.hibernate:hibernate-core:5.1.0.Final org.javassist:javassist:3.20.0-GA org.javassist:javassist:3.13.0-GA +--- org.javassist:javassist:3.13.0-GA -> 3.20.0-GA task printDepsTreeInJson { doLast { configurations.compile.incoming.getResolutionResult().getAllDependencies().each { depResult -> println "{\"from\":\"" + depResult.getFrom() + "\"," + "\"requested\":\"" + depResult.getRequested() + "\"}" } } } gradle -b build.gradle printDepsTreeInJson :printDepsTreeInJson {"from":"project :","requested":"org.javassist:javassist:3.13.0-GA"} {"from":"project :","requested":"org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1"} {"from":"project :","requested":"org.hibernate:hibernate-core:5.1.0.Final"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.jboss.logging:jboss-logging:3.3.0.Final"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.javassist:javassist:3.20.0-GA"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"antlr:antlr:2.7.7"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.jboss:jandex:2.0.0.Final"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"com.fasterxml:classmate:1.3.0"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"dom4j:dom4j:1.6.1"} {"from":"dom4j:dom4j:1.6.1","requested":"xml-apis:xml-apis:1.0.b2"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.hibernate.common:hibernate-commons-annotations:5.0.1.Final"} {"from":"org.hibernate.common:hibernate-commons-annotations:5.0.1.Final","requested":"org.jboss.logging:jboss-logging:3.3.0.Final"} {"from":"project :","requested":"org.springframework:spring-web:4.2.5.RELEASE"} {"from":"org.springframework:spring-web:4.2.5.RELEASE","requested":"org.springframework:spring-aop:4.2.5.RELEASE"} {"from":"org.springframework:spring-aop:4.2.5.RELEASE","requested":"aopalliance:aopalliance:1.0"} {"from":"org.springframework:spring-aop:4.2.5.RELEASE","requested":"org.springframework:spring-beans:4.2.5.RELEASE"} {"from":"org.springframework:spring-beans:4.2.5.RELEASE","requested":"org.springframework:spring-core:4.2.5.RELEASE"} {"from":"org.springframework:spring-core:4.2.5.RELEASE","requested":"commons-logging:commons-logging:1.2"} {"from":"org.springframework:spring-aop:4.2.5.RELEASE","requested":"org.springframework:spring-core:4.2.5.RELEASE"} {"from":"org.springframework:spring-web:4.2.5.RELEASE","requested":"org.springframework:spring-beans:4.2.5.RELEASE"} {"from":"org.springframework:spring-web:4.2.5.RELEASE","requested":"org.springframework:spring-context:4.2.5.RELEASE"} {"from":"org.springframework:spring-context:4.2.5.RELEASE","requested":"org.springframework:spring-aop:4.2.5.RELEASE"} {"from":"org.springframework:spring-context:4.2.5.RELEASE","requested":"org.springframework:spring-beans:4.2.5.RELEASE"} {"from":"org.springframework:spring-context:4.2.5.RELEASE","requested":"org.springframework:spring-core:4.2.5.RELEASE"} {"from":"org.springframework:spring-context:4.2.5.RELEASE","requested":"org.springframework:spring-expression:4.2.5.RELEASE"} {"from":"org.springframework:spring-expression:4.2.5.RELEASE","requested":"org.springframework:spring-core:4.2.5.RELEASE"} {"from":"org.springframework:spring-web:4.2.5.RELEASE","requested":"org.springframework:spring-core:4.2.5.RELEASE"} "from":"project :" {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.jboss.logging:jboss-logging:3.3.0.Final"} org.javassist:javassist {"from":"project :","requested":"org.javassist:javassist:3.13.0-GA"} {"from":"org.hibernate:hibernate-core:5.1.0.Final","requested":"org.javassist:javassist:3.20.0-GA"} apply plugin:'java' repositories { jcenter() } dependencies { compile 'org.javassist:javassist:3.13.0-GA' compile 'org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1' compile 'org.hibernate:hibernate-core:5.1.0.Final' compile 'org.springframework:spring-web:4.2.5.RELEASE' } task printDepsTreeInJson { doLast { configurations.compile.incoming.getResolutionResult().getAllDependencies().each { depResult -> println "{\"from\":\"" + depResult.getFrom() + "\"," + "\"requested\":\"" + depResult.getRequested() + "\"}" } } } task printSolvedDepsTreeInJson { doLast { def jsonOutput = "[" configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.each { dep -> def addToJson addToJson = { resolvedDep -> jsonOutput += "\n{" jsonOutput += "\"groupId\":\"${resolvedDep.module.id.group}\",\"artifactId\":\"${resolvedDep.module.id.name}\",\"version\":\"${resolvedDep.module.id.version}\",\"file\":\"${resolvedDep.getModuleArtifacts()[0].file}\"" jsonOutput += ",\"dependencies\":[" if(resolvedDep.children.size()!=0){ resolvedDep.children.each { childResolvedDep -> if(resolvedDep in childResolvedDep.getParents() && childResolvedDep.getConfiguration() == 'compile'){ addToJson(childResolvedDep) } } if(jsonOutput[-1] == ','){ jsonOutput = jsonOutput[0..-2] } } jsonOutput += "]}," } addToJson(dep) } if(jsonOutput[-1] == ','){ jsonOutput = jsonOutput[0..-2] } jsonOutput += "]" println jsonOutput } }