Ответ 1
вы можете использовать флаг -all, чтобы получить более подробный список доступных задач и зависимостей задач
gradle tasks --all
./gradle tasks
перечисляет "некоторые" из заданий. Смотря на
http://gradle.org/docs/current/userguide/java_plugin.html есть скрытые, которые не указаны. Кроме того, другие плагины не будут иметь такой красивый симпатичный график зависимостей между задачами.
Есть ли способ
depenceny:tree
, но для задач)вы можете использовать флаг -all, чтобы получить более подробный список доступных задач и зависимостей задач
gradle tasks --all
Перечислите задачи и задачи, от которых они зависят (вроде как maven's depenceny: дерево, но для задач)
для этого вы можете использовать опцию --dry-run
(или -m
), которая отображает задачи, которые выполняются для конкретной команды, но не выполняет команду, например.
gradle assemble --dry-run
вы можете найти более здесь
gradle - профиль clean build
Как только это будет завершено, перейдите в папку build/reports/profile и просмотрите файл .html. Вы увидите разрешение зависимостей и другую информацию со временем, которое потребовалось на хорошей странице html.
Вы можете попробовать com.dorongold.task-tree плагин с простым использованием:
gradle <task 1>...<task N> taskTree
Вы можете программно получить доступ к графику задачи, чтобы проверить его в сборке script, используя Gradle.getTaskGraph()
По мере того, как ваш мультипроект растет, решение, которое я обозначил как правильно, становится немного бесполезным и трудно читаемым
gradle tasks --all
Вместо этого я перешел к рассмотрению конкретного проекта, сделав его намного проще
gradlew :full-httpproxy:tasks --all
где 'full-httpproxy' - это имя моего проекта (и каталог как типичный).
Мне любопытно, как перечислять задачи в главном/корневом проекте, хотя у вас также есть выдающийся вопрос
Как перечислить все задачи для основного проекта только в 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: [email protected]
Found 19 tasks.
task ':compileJava'
- task 'compileJava' input files
task ':compileScala'
- task 'compileScala' input files
- compileJava
task ':processResources'
- task 'processResources' input files
task ':classes'
- [email protected]
- task 'classes' input files
- compileJava
- dirs
- compileScala
- processResources
task ':jar'
- task 'jar' input files
task ':assemble'
- task 'assemble' input files
- org.gradle.api.inter[email protected]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
- [email protected]
- 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
- [email protected]
- 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