Есть ли способ перечислить зависимости задач в Gradle?

./gradle tasks перечисляет "некоторые" из заданий. Смотря на http://gradle.org/docs/current/userguide/java_plugin.html есть скрытые, которые не указаны. Кроме того, другие плагины не будут иметь такой красивый симпатичный график зависимостей между задачами.

Есть ли способ

  • список всех задач во всех плагинах с gradle
  • укажите задачи и задачи, от которых они зависят (например, maven depenceny:tree, но для задач)

Ответ 1

вы можете использовать флаг -all, чтобы получить более подробный список доступных задач и зависимостей задач

gradle tasks --all

Ответ 2

Перечислите задачи и задачи, от которых они зависят (вроде как maven's depenceny: дерево, но для задач)

для этого вы можете использовать опцию --dry-run (или -m), которая отображает задачи, которые выполняются для конкретной команды, но не выполняет команду, например.

gradle assemble --dry-run

вы можете найти более здесь

Ответ 3

gradle - профиль clean build

Как только это будет завершено, перейдите в папку build/reports/profile и просмотрите файл .html. Вы увидите разрешение зависимостей и другую информацию со временем, которое потребовалось на хорошей странице html.

Ответ 4

Вы можете попробовать com.dorongold.task-tree плагин с простым использованием:

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

Ответ 5

Вы можете программно получить доступ к графику задачи, чтобы проверить его в сборке script, используя Gradle.getTaskGraph()

Ответ 6

По мере того, как ваш мультипроект растет, решение, которое я обозначил как правильно, становится немного бесполезным и трудно читаемым

gradle tasks --all

Вместо этого я перешел к рассмотрению конкретного проекта, сделав его намного проще

gradlew :full-httpproxy:tasks --all

где 'full-httpproxy' - это имя моего проекта (и каталог как типичный).

Мне любопытно, как перечислять задачи в главном/корневом проекте, хотя у вас также есть выдающийся вопрос

Как перечислить все задачи для основного проекта только в gradle?

поскольку это не представляется возможным сейчас.

Ответ 7

Вы можете вставить это в свой 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