Qu'est-ce que la commande de graphe de dépendance d'artefact Gradle?


123

J'ai lu ce commentaire dans la documentation Gradle :

To deal with problems due to version conflicts, reports with dependency graphs
are also very helpful. Such reports are another feature of dependency management.

J'apporte une sorte de pot, mais j'ai besoin de savoir d'où il vient. Normalement, je l'exclurais simplement globalement, mais j'ai besoin d'informations sur la hiérarchie ici. Comment puis-je obtenir ces informations comme je le peux de Ivy et Maven?

NE PAS mentionner que quelqu'un apporte (beaucoup) des pots Hibernate à ma liste de pots et je veux vraiment savoir qui puisque je n'utilise pas Hibernate et essayer de supprimer cette dépendance.

Réponses:


127

La commande est gradle dependencies, et sa sortie est beaucoup améliorée dans Gradle 1.2. (Vous pouvez déjà essayer le 1.2-rc-1 aujourd'hui.)


en fait, j'ai essayé ça ... J'ai réalisé que mes dépendances se trouvaient dans mon sous-projet de niveau le plus bas (c'est-à-dire celui dont tout le monde dépendait) et pas dans le projet principal ... je ne sais pas si c'est mauvais ou bon à ce stade .
Dean Hiller

Vous devez exécuter la commande pour le projet particulier qui vous intéresse. En général, vous allez dans le répertoire du projet et exécutez la commande à partir de là.
Peter Niederwieser

9
Cela ne fonctionne pas sur tous les types de projets. Je reçois «Aucune configuration» et j'ai besoin d'exécuter autre chose pour que cela fonctionne. Espérons qu'un jour, gradle gérera cela afin que les commandes réelles soient prédictibles.
R. van Twisk

2
Existe-t-il un indicateur pour inclure les dépendances transitives?
thetwan

1
Ils sont inclus automatiquement.
Peter Niederwieser

121

Ah, comme je n'avais aucune dépendance dans mon projet principal, "gradle dependencies" ne répertorie que celles-ci et non les dépendances de sous-projet, donc la commande correcte a fini par être

 gradle :<subproject>:dependencies

donc pour moi c'était

 gradle :master:dependencies

20
Bien si vous pouviez dire -rpour récursif
Blundell

38

Si vous voulez voir les dépendances sur le projet et tous les sous-projets utilisés dans votre build.gradle de niveau supérieur:

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

Puis appelez gradle:

gradle listAllDependencies

2
Plus de détails sur cette approche dans le billet de blog: solidsoft.wordpress.com/2014/11/13/…
Marcin Zajączkowski

9
Vous pouvez l'ajouter à votre ~/.gradle/init.gradlefichier plutôt que de l'ajouter à chaque build. Ensuite, cela fonctionne pour tous les projets sur votre machine, mais uniquement pour vous.
derekv

24

Si vous avez beaucoup de configurations, la sortie peut être assez longue. Pour afficher simplement les dépendances pour la configuration d'exécution, exécutez

gradle dependencies --configuration runtime

15

Si vous souhaitez que récursif inclue des sous-projets, vous pouvez toujours l'écrire vous-même:

Collez dans le niveau supérieur build.gradle:

task allDeps << {
    println "All Dependencies:"
    allprojects.each { p ->
        println()
        println " $p.name ".center( 60, '*' )
        println()
        p.configurations.all.findAll { !it.allDependencies.empty }.each { c ->
            println " ${c.name} ".center( 60, '-' )
            c.allDependencies.each { dep ->
                println "$dep.group:$dep.name:$dep.version"
            }
            println "-" * 60
        }
    }
}

Courir avec:

gradle allDeps

5
gradlew -q :app:dependencies > dependencies.txt

Écrit toutes les dépendances dans le fichier dependencies.txt


4

Pour ceux qui cherchent à déboguer les dépendances gradle dans les react-nativeprojets, la commande est (exécutée à partir de projectname/android)

./gradlew app:dependencies --configuration compile

0

Dans les versions récentes de Gradle (c.-à-d. 5+), si vous exécutez votre build avec le --scandrapeau, il vous indique toutes sortes d'informations utiles, y compris les dépendances, dans un navigateur sur lequel vous pouvez cliquer.

gradlew --scan clean build

Il analysera la merde de ce qui se passe dans cette version. C'est plutôt chouette.


1
mais il n'analyse que les cibles qui n'ont pas parcouru le graphique complet :(.
Dean Hiller

Vrai! Cela dépend de ce que vous voulez. Je pense que les dépendances uniquement pour les cibles exécutées sont encore plus puissantes. Cela vous dira pourquoi un ensemble de commandes semble faire la mauvaise chose.
Ryan Shillington

Je veux vraiment le graphe complet pour ne pas avoir à tester chaque nœud tbh .... cela devient assez fastidieux .... même si cela prend du temps, c'est plus utile mais je ne vois pas de moyen de faire dans les versions les plus récentes.
Dean Hiller
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.