Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does '->' (arrow) mean in gradle's dependency graph?

I'm trying to run some Android tests, however, the compiler complains that multiple dex files exist.

Multiple dex files define Lorg/hamcrest/MatcherAssert; 

So I'm trying to filter duplicated dependencies: $ ./gradlew -q dependencies app:dependencies --configuration androidTestCompile

However I get the following output:

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

I'm confused as what the arrows (->) mean. What do they mean?

like image 330
Some Noob Student Avatar asked Jan 14 '15 21:01

Some Noob Student


1 Answers

It means that dependency graph contains multiple dependencies with the same group and module but different versions for e.g. org.hamcrest:hamcrest-core. Gradle tries to resolve conflicted versions automatically - by default the latest version is chosen. On the left side of -> is the requested version, on the right the version that will be picked. Here similar question can be found.

like image 172
Opal Avatar answered Sep 21 '22 13:09

Opal