183 votes

Existe-t-il un moyen de lister les dépendances des tâches dans Gradle ?

./gradle tasks énumère "certaines" des tâches. En regardant http://gradle.org/docs/current/userguide/java_plugin.html il y a des tâches cachées qui ne sont pas listées. De plus, d'autres plugins n'auront pas un graphique aussi joli des dépendances entre les tâches.

Existe-t-il un moyen de

  1. lister toutes les tâches dans tous les plugins avec gradle
  2. énumère les tâches et les tâches dont elles dépendent (un peu comme l'outil maven dependency:tree mais pour les tâches)

196voto

lolotron Points 577

liste les tâches et les tâches dont elles dépendent (un peu comme la méthode maven depenceny:tree mais pour les tâches)

pour cela, vous pouvez utiliser --dry-run (ou -m ) qui liste les tâches qui sont exécutées dans l'ordre pour une commande particulière, mais n'exécute pas la commande, par ex.

gradle assemble --dry-run

vous pouvez trouver plus ici

105voto

Rene Groeschke Points 5254

Avant la version 3.3 de Gradle, vous pouviez utiliser la commande --all pour obtenir une liste plus détaillée des tâches disponibles et de leurs dépendances :

gradle tasks --all

Le rapport de dépendance a été supprimé de cette tâche à partir de Gradle 3.3 pour des raisons de performance. Ce changement et sa justification ont été documentés dans le document Notes de publication de Gradle 3.3 .

0 votes

Il ne semble pas y avoir de tâche pour télécharger les dépendances du web nulle part ??? L'exécution de la tâche eclipse télécharge clairement des choses mais ne sait pas où se trouve cette dépendance... pas moyen de la surcharger ?

2 votes

L'action de télécharger des ressources n'est pas liée à une tâche dédiée. Les dépendances dans gradle sont ajoutées aux Configurations. Dès que vous (dans l'implémentation de votre propre tâche) ou gradle (dans ses propres tâches fournies) référence les fichiers de cette configuration, le mécanisme de résolution est déclenché.

62 votes

Cela ne liste pas les dépendances, du moins avec Gradle 1.5 ou 1.7. Est-ce qu'il ne l'a fait qu'une fois, ou est-ce une réponse incomplète ?

67voto

Oleksandr Points 3997

Vous pouvez essayer com.dorongold.task-tree plugin avec une utilisation simple :

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

Exemple de résultat de la readme :

gradle build taskTree

:build
+--- :assemble
|    \--- :jar
|         \--- :classes
|              +--- :compileJava
|              \--- :processResources
\--- :check
     \--- :test
          +--- :classes
          |    +--- :compileJava
          |    \--- :processResources
          \--- :testClasses
               +--- :compileTestJava
               |    \--- :classes
               |         +--- :compileJava
               |         \--- :processResources
               \--- :processTestResources

44voto

cstroe Points 819

Vous pouvez mettre cela dans votre 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
        }
    }
}

ou ceci dans votre build.gradle.kts :

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

Ensuite, exécutez votre tâche avec gradle :

./gradlew build

Et vous devriez voir ça :

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

16voto

Arun Sangal Points 751

L'arbre des tâches de gradle peut être visualisé par gradle tasks --all ou essayez les plugins suivants :

Graphes Gradle et Talaiot : Regardez ça : https://proandroiddev.com/graphs-gradle-and-talaiot-b0c02c50d2b1 blog, car il permet de visualiser graphiquement les tâches et les dépendances. Cela utilise gratuit ouvrir l'outil Graphviz Gephi ( https://gephi.org/features/ )

gradle-task-tree : https://github.com/dorongold/gradle-task-tree et

gradle-visteg : https://github.com/mmalohlava/gradle-visteg

  1. gradle-visteg plugin : Le fichier généré peut être post-traité par l'intermédiaire de Graphviz dot utilitaire.

  2. Par exemple Une image png est produite comme suit :

    cd build/reports/; dot -Tpng ./visteg.dot -o ./visteg.dot.png

Pour plus d'informations, veuillez consulter le site Graphviz page d'accueil.

Quelles que soient les tâches qui sont effectivement utilisées pour exécuter une tâche (par ex : build ) peut être visualisé dans une belle page HTML en utilisant --profile option

gradle --profil une construction propre

Une fois que cela est terminé, allez dans le dossier build/reports/profile et parcourez le fichier .html. Vous verrez la résolution des dépendances et d'autres informations avec le temps que cela a pris dans une belle page html.

17 votes

Le rapport ne contient aucune information sur les dépendances entre les tâches. Il liste simplement de manière séquentielle toutes les tâches qui ont été exécutées pendant la construction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X