¿Qué es el comando Gradle artifact dependency graph?


123

Leí este comentario en los documentos de 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.

Tengo algún tipo de jarra que traigo pero necesito averiguar de dónde viene. Normalmente lo excluiría globalmente, pero necesito información sobre la jerarquía aquí. ¿Cómo obtengo esta información como puedo de Ivy y Maven?

Sin mencionar que alguien está trayendo frascos de Hibernate (mucho) a mi lista de jarros y realmente quiero saber quién, ya que no estoy usando Hibernate e intento cortar esa dependencia.

Respuestas:


127

El comando es gradle dependencies, y su salida se ha mejorado mucho en Gradle 1.2. (Ya puedes probar 1.2-rc-1 hoy).


en realidad, intenté eso ... me di cuenta de que mis dependencias están en mi subproyecto de nivel más bajo (es decir, el que todos dependen) y no en el proyecto principal ... no estoy seguro de si eso es malo o bueno en este momento .
Dean Hiller

Debe ejecutar el comando para el proyecto en particular que le interese. Por lo general, debería cd en el directorio del proyecto y ejecutar el comando desde allí.
Peter Niederwieser

9
Esto no funciona en todo tipo de proyectos. Estoy obteniendo 'Sin configuraciones' y necesito ejecutar algo más para que esto funcione. Esperemos que algún día Gradle maneje esto para que los comandos reales sean predecibles.
R. van Twisk

2
¿Hay una bandera para incluir dependencias transitivas?
thetwan

1
Se incluyen automáticamente.
Peter Niederwieser

121

Ah, como no tenía dependencias en mi proyecto maestro, "dependencias de gradle" solo enumera esas y no dependencias de subproyectos, por lo que el comando correcto terminó siendo

 gradle :<subproject>:dependencies

así que para mí esto fue

 gradle :master:dependencies

20
Agradable si pudieras decir -rrecursivo
Blundell

38

Si desea ver las dependencias en el proyecto y todos los subproyectos, use en su build.gradle de nivel superior:

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

Entonces llame a gradle:

gradle listAllDependencies

2
Más detalles sobre ese enfoque en la publicación del blog: solidsoft.wordpress.com/2014/11/13/…
Marcin Zajączkowski

9
Puede agregar esto a su en ~/.gradle/init.gradlelugar de agregarlo a cada compilación. Entonces funciona para todos los proyectos en su máquina, pero solo para usted.
derekv

24

Si tienes muchas configuraciones, la salida puede ser bastante larga. Para mostrar solo las dependencias para la configuración de tiempo de ejecución, ejecute

gradle dependencies --configuration runtime

15

Si desea que recursivo incluya subproyectos, siempre puede escribirlo usted mismo:

Pegar en el nivel superior 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
        }
    }
}

Corre con:

gradle allDeps

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

Escribirá todas las dependencias en el archivo dependencies.txt


4

Para aquellos que buscan depurar dependencias de gradle en react-nativeproyectos, el comando es (ejecutado desde projectname/android)

./gradlew app:dependencies --configuration compile

0

En versiones recientes de Gradle (es decir, 5+), si ejecuta su compilación con el --scanindicador, le informa todo tipo de información útil, incluidas las dependencias, en un navegador donde puede hacer clic.

gradlew --scan clean build

Analizará la basura de lo que está sucediendo en esa compilación. Es muy lindo.


1
pero solo analiza los objetivos que no se ejecutaron en el gráfico completo :(.
Dean Hiller

¡Cierto! Depende de lo que quieras. Creo que las dependencias solo para los objetivos que se ejecutaron son aún más poderosas. Te dirá por qué un conjunto de comandos parece hacer lo incorrecto.
Ryan Shillington

Realmente quiero el gráfico completo, así que no tengo que probar cada nodo tbh ... eso se vuelve bastante tedioso ... incluso si lleva un tiempo, es más útil, pero no veo una manera de hacerlo en las versiones más nuevas
Dean Hiller
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.