Was bedeutet '->' (Pfeil) im Gradle-Abhängigkeitsdiagramm?

82

Ich versuche einige Android-Tests auszuführen, der Compiler beschwert sich jedoch, dass mehrere Dex-Dateien vorhanden sind.

Multiple dex files define Lorg/hamcrest/MatcherAssert;

Ich versuche also, doppelte Abhängigkeiten zu filtern: $ ./gradlew -q dependencies app:dependencies --configuration androidTestCompile

Ich erhalte jedoch die folgende Ausgabe:

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

Ich bin verwirrt darüber, was die Pfeile (->) bedeuten. Was meinen sie?

Ein Noob-Student
quelle

Antworten:

131

Dies bedeutet, dass das Abhängigkeitsdiagramm mehrere Abhängigkeiten mit derselben groupund moduleunterschiedlichen Versionen enthält, z org.hamcrest:hamcrest-core. Gradle versucht, widersprüchliche Versionen automatisch zu lösen - standardmäßig wird die neueste Version ausgewählt. Auf der linken Seite ->befindet sich die angeforderte Version, auf der rechten Seite die Version, die ausgewählt wird. Hier kann eine ähnliche Frage gefunden werden.

Opal
quelle
1
Ich habe gestimmt, können Sie erklären, was ausgelassene Abhängigkeiten bedeuten?
Java123999
1
Dies bedeutet, dass an anderer Stelle im Bericht die Abhängigkeit bereits mit den gesamten Unterabhängigkeiten dargestellt wurde, daher ist sie hier nur die Wurzel.
Opal
3
@ java123999. Eine Abhängigkeit kann ihre eigenen Abhängigkeiten haben. Es kann auch vorkommen, dass eine Abhängigkeit zweimal aufgeführt wird. In diesem Fall werden nur Abhängigkeiten für den ersten Eintrag gedruckt, während der zweite Eintrag mit markiert wird (*).
Opal
1
Das * zeigt also grundsätzlich doppelte Abhängigkeiten an?
Java123999
1
Wenn ich nicht mindestens x Zeichen schreiben müsste, würde ich einfach schreiben: ja.
Opal