2012-09-05 8 views
80

leí este comentario en el Gradle docs:¿Qué es el comando Gradle artifact dependency graph?

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 frasco siendo llevado en pero tengo que averiguar de dónde está viniendo. Normalmente lo excluiría globalmente, pero necesito información sobre la jerarquía aquí. ¿Cómo puedo obtener esta información como puedo de Ivy y Maven?

Sin mencionar que alguien trae los frascos de Hibernate (mucho) a mi lista de jar y realmente quiero saber quién, ya que no estoy usando Hibernate y trato de eliminar esa dependencia.

Respuesta

84

El comando es gradle dependencies, y su salida es mucho mejor en Gradle 1.2. (Ya se puede tratar 1,2-RC-1 en la actualidad.)

+0

realidad, lo he intentado ... Me di cuenta de que mis dependencias están en mi subproyecto de nivel más bajo (es decir, el que todos los demás dependen) y no en el proyecto principal ... no estoy seguro de si eso es malo o bueno en este punto. –

+0

Debe ejecutar el comando para el proyecto en particular que le interese. Normalmente, debe hacer un cd en el directorio del proyecto y ejecutar el comando desde allí. –

+7

Esto no funciona en todo tipo de proyectos. Estoy obteniendo 'Sin configuraciones' y necesito ejecutar algo más para poner esto en marcha. Afortunadamente, un día gradle manejará esto para que los comandos reales sean predecibles. –

98

Ah, ya que no tenía ninguna dependencia en mi proyecto principal, "dependencias Gradle" sólo las listas de esos y no dependencias de subproyectos por lo que el comando correcto terminó siendo

gradle :<subproject>:dependencies 

así que para mí fue

gradle :master:dependencies 
+15

Bueno si se puede decir '-r' para recursivo – Blundell

13

Si desea recursiva para incluir sub-proyectos, siempre se puede escribir 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 
     } 
    } 
} 

Ejecutar con:

gradle allDeps 
28

Si quieren ver las dependencias de proyecto y todos los subproyectos utilizar en su build.gradle de nivel superior:

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

luego llamar a Gradle :

gradle listAllDependencies 
+1

Más detalles sobre ese enfoque en la entrada del blog: https://solidsoft.wordpress.com/2014/11/13/gradle-tricks-display-dependencies-for -all-subprojects-in-multi-project-build/ –

+5

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

+1

gracias, gracias, gracias – chrismarx

16

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

gradle dependencies --configuration runtime 
+0

utilicé esto, pero no puedo entender lo que está señalando –

0

Para aquellos que buscan para depurar dependencias Gradle en react-native proyectos, el comando es (excuted de projectname/android)

./gradlew app:dependencies --configuration compile