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.

Dean Hiller
la source

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.)

Peter Niederwieser
la source
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
Dean Hiller
la source
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
user1707414
la source
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
glacier
la source
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
Renato
la source
5
gradlew -q :app:dependencies > dependencies.txt

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

abitcode
la source
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
pscl
la source
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.

Ryan Shillington
la source
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