如何在Gradle多项目构建中打印出所有依赖项

时间:2017-05-30 15:48:04

标签: gradle dependency-management

我有一个Gradle多项目构建,其中包含一个主目录,其中包含常见定义,以及一些通过include语句在settings.gradle中定义的项目。

构建,测试,运行所有工作正常,但通过任务dependencies显示依赖关系不起作用,它只打印:

$ g dependencies
master
:dependencies

------------------------------------------------------------
Root project
------------------------------------------------------------

No configurations

BUILD SUCCESSFUL

在主目录中执行gradle :project1:dependencies按预期工作。

如何让Gradle打印出整个依赖关系树,包括所有包含的项目的第三方库?

3 个答案:

答案 0 :(得分:2)

我不知道任何内置任务。您可能想要制作一个自定义任务,如下所示:

task ('showAll') {
doLast {
   allprojects.each {
       println(it.name+':')
       println('-compile:')
        configurations.compile.each {
            c ->
             println('   '+c.name)
        }
       println '-testCompile:'
       configurations.testCompile.each {
           r->
           println('   '+ r.name)
       }
    }
}
}

我项目的输出:

:showAll
Tools:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar
Accounting:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar
Jace:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar
Bash:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar
CSS:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar
FXCSS:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar
Gradle:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar
Groovy:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar
HTML:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar
Java:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar
Text:
-compile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
-testCompile:
   groovy-all-2.4.9.jar
   commons-lang3-3.5.jar
   commons-io-2.5.jar
   commons-collections4-4.1.jar
   jsoup-1.10.2.jar
   junit-4.11.jar
   hamcrest-core-1.3.jar

答案 1 :(得分:2)

下一个任务是什么,我们可以在其中创建自定义任务并将其应用于所有项目并使其依赖于dependencies任务。这是一个例子:

allprojects { currProject ->
    task printDependencies {
        dependsOn 'dependencies'
    }
}

然后我们可以使用./gradlew printDependencies打印所有模块的所有依赖项。

答案 2 :(得分:0)

不幸的是,您必须指定自己的任务:

allprojects {
    task printAllDependencies(type: DependencyReportTask) {}
}

然后,执行:./gradlew printAllDependencies
如果您不想看到根项目的依赖项,请将此任务放在subprojects块中。

subprojects {
    task printSubDependencies(type: DependencyReportTask) {}
}


假设您需要它来找到某个依赖项。在这种情况下,您可以使用dependencyInsight任务的功能。

subprojects {
    task findDependency(type: DependencyInsightReportTask) {}
}

然后运行

./gradlew findDependency --configuration compile --dependency spring-data-jpa