¿Qué significa '->' (flecha) en el gráfico de dependencia de Gradle?

82

Estoy tratando de ejecutar algunas pruebas de Android, sin embargo, el compilador se queja de que existen varios archivos dex.

Multiple dex files define Lorg/hamcrest/MatcherAssert;

Entonces estoy tratando de filtrar las dependencias duplicadas: $ ./gradlew -q dependencies app:dependencies --configuration androidTestCompile

Sin embargo, obtengo el siguiente resultado:

------------------------------------------------------------
Project :app
------------------------------------------------------------

androidTestCompile - Classpath for compiling the androidTest sources.
+--- org.mockito:mockito-core:1.9.5
|    +--- org.hamcrest:hamcrest-core:1.1 -> 1.3
|    \--- org.objenesis:objenesis:1.0 -> 2.1
+--- com.google.dexmaker:dexmaker-mockito:1.2
|    +--- com.google.dexmaker:dexmaker:1.2
|    \--- org.mockito:mockito-core:1.9.5 (*)
+--- com.android.support.test.espresso:espresso-core:2.0
|    +--- com.squareup:javawriter:2.1.1
|    +--- org.hamcrest:hamcrest-integration:1.1
|    |    \--- org.hamcrest:hamcrest-core:1.1 -> 1.3
|    +--- org.hamcrest:hamcrest-library:1.1
|    |    \--- org.hamcrest:hamcrest-core:1.1 -> 1.3
|    +--- javax.inject:javax.inject:1
|    +--- com.android.support.test.espresso:espresso-idling-resource:2.0
|    +--- com.android.support.test:testing-support-lib:0.1
|    |    \--- junit:junit-dep:4.10
|    |         \--- org.hamcrest:hamcrest-core:1.1 -> 1.3
|    +--- com.google.code.findbugs:jsr305:2.0.1
|    +--- javax.annotation:javax.annotation-api:1.2
|    \--- org.hamcrest:hamcrest-core:1.1 -> 1.3
+--- com.android.support.test:testing-support-lib:0.1 (*)
+--- org.powermock:powermock-module-junit4:1.5.6
|    +--- junit:junit:4.11
|    |    \--- org.hamcrest:hamcrest-core:1.3
|    \--- org.powermock:powermock-module-junit4-common:1.5.6
|         +--- junit:junit:4.4 -> 4.11 (*)
|         +--- org.powermock:powermock-core:1.5.6
|         |    +--- org.powermock:powermock-reflect:1.5.6
|         |    |    \--- org.objenesis:objenesis:2.1
|         |    \--- org.javassist:javassist:3.18.2-GA
|         \--- org.powermock:powermock-reflect:1.5.6 (*)
\--- org.powermock:powermock-api-mockito:1.5.6
     \--- org.powermock:powermock-api-support:1.5.6
          +--- org.powermock:powermock-core:1.5.6 (*)
          \--- org.powermock:powermock-reflect:1.5.6 (*)

(*) - dependencies omitted (listed previously)

Estoy confundido sobre lo que significan las flechas (->). ¿Qué quieren decir?

Algún estudiante novato
fuente

Respuestas:

131

Esto significa que la dependencia gráfico contiene múltiples dependencias con el mismo groupy modulepero diferentes versiones para por ejemplo org.hamcrest:hamcrest-core. Gradle intenta resolver las versiones en conflicto automáticamente; de ​​forma predeterminada, se elige la última versión. A la izquierda ->está la versión solicitada, a la derecha la versión que se seleccionará. Aquí se puede encontrar una pregunta similar.

Ópalo
fuente
1
He votado a favor, ¿puede explicar qué significan las dependencias omitidas?
java123999
1
Significa que en otra parte del informe, la dependencia ya se presentó con todas las subdependencias, por lo que aquí es solo la raíz.
Opal
3
@ java123999. Una dependencia puede tener sus propias dependencias. También puede ocurrir que una dependencia se enumere dos veces. En tal caso, solo se imprimirán las dependencias de la primera entrada, mientras que la segunda entrada se marcará con (*).
Opal
1
Entonces, ¿el * básicamente indica dependencias duplicadas?
java123999
1
Si no tuviera que escribir al menos x signos, simplemente escribiría: sí.
Opal