有没有办法在Gradle中列出任务依赖关系?

./gradle tasks列出“一些”任务。 看看http://gradle.org/docs/current/userguide/java_plugin.html有没有列出隐藏的。 另外,其他插件不会有任务之间依赖关系的漂亮graphics。

有没有办法

  1. 用gradle列出所有插件中的所有任务
  2. 列出任务和他们依赖的任务(有点像Maven的依赖depenceny:tree但是任务)

您可以使用–all标志来获取可用任务和任务依赖关系的更详细列表

 gradle tasks --all 

gradle 简洁的构build

完成后,转到构build/报告/configuration文件文件夹并浏览.html文件。 你会看到依赖关系的解决scheme和其他信息与时间,它在一个不错的HTML页面。

你可以用简单的用法来试试com.dorongold.task-tree插件:

 gradle <task 1>...<task N> taskTree 

列出任务和他们依赖的任务(有点像Maven的依赖:树,但是任务)

为此,您可以使用--dry-run (或-m )选项列出为特定命令执行的任务,但不执行命令,例如

 gradle assemble --dry-run 

你可以在这里find更多

您可以通过编程访问任务图,以使用Gradle.getTaskGraph()在构build脚本中检查它

随着您的多项目增长,我标记为正确的解决scheme会变得有点不自然,难以阅读

 gradle tasks --all 

相反,我已经转移到了一个特定的项目,使其更容易

 gradlew :full-httpproxy:tasks --all 

其中“full-httpproxy”是我的项目(和典型的目录)的名称。

然而,我很好奇如何列出master / root项目上的任务,并且还有一个突出的问题

如何仅在gradle中列出主项目的所有任务?

因为现在这样做似乎不可能。

你可以坚持到你的build.gradle

 gradle.taskGraph.whenReady {taskGraph -> println "Found task graph: " + taskGraph println "Found " + taskGraph.allTasks.size() + " tasks." taskGraph.allTasks.forEach { task -> println task task.dependsOn.forEach { dep -> println " - " + dep } } } 

然后用gradle运行你的任务:

 ./gradlew build 

你应该看到这个:

 Found task graph: org.gradle.execution.taskgraph.DefaultTaskGraphExecuter@36eb780c Found 19 tasks. task ':compileJava' - task 'compileJava' input files task ':compileScala' - task 'compileScala' input files - compileJava task ':processResources' - task 'processResources' input files task ':classes' - org.gradle.api.internal.tasks.DefaultTaskDependency@287a7782 - task 'classes' input files - compileJava - dirs - compileScala - processResources task ':jar' - task 'jar' input files task ':assemble' - task 'assemble' input files - org.gradle.api.internal.artifacts.DefaultPublishArtifactSet$ArtifactsTaskDependency@5bad9616 task ':compileTestJava' - task 'compileTestJava' input files task ':compileTestScala' - task 'compileTestScala' input files - compileTestJava task ':processTestResources' - task 'processTestResources' input files task ':testClasses' - processTestResources - task 'testClasses' input files - compileTestScala - org.gradle.api.internal.tasks.DefaultTaskDependency@42c1fa08 - compileTestJava - dirs task ':compileIntegrationTestJava' - task 'compileIntegrationTestJava' input files task ':compileIntegrationTestScala' - task 'compileIntegrationTestScala' input files - compileIntegrationTestJava task ':processIntegrationTestResources' - task 'processIntegrationTestResources' input files task ':integrationTestClasses' - processIntegrationTestResources - compileIntegrationTestJava - org.gradle.api.internal.tasks.DefaultTaskDependency@7c8aa0fe - compileIntegrationTestScala - dirs - task 'integrationTestClasses' input files task ':composeUp' - task 'composeUp' input files task ':integrationTest' - task ':composeUp' - task 'integrationTest' input files task ':test' - task 'test' input files task ':check' - task 'check' input files - task ':test' - task ':integrationTest' task ':build' - task 'build' input files - check - assemble