Gradle의 종속성 그래프에서 '->'(화살표)는 무엇을 의미합니까?


82

일부 Android 테스트를 실행하려고하는데 컴파일러가 여러 dex 파일이 존재한다고 불평합니다.

Multiple dex files define Lorg/hamcrest/MatcherAssert;

그래서 중복 된 종속성을 필터링하려고합니다. $ ./gradlew -q dependencies app:dependencies --configuration androidTestCompile

그러나 다음과 같은 출력이 나타납니다.

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

화살표 (->)가 무엇을 의미하는지 혼란 스럽습니다. 무슨 뜻입니까?

답변:


131

이것은 종속성 그래프 같은 여러 종속 포함 수단 groupmodule예에 대한 다른 버전이 있지만 org.hamcrest:hamcrest-core. Gradle은 충돌 버전을 자동으로 해결하려고합니다. 기본적으로 최신 버전이 선택됩니다. 의 왼쪽에는 ->요청 된 버전이 있고 오른쪽에는 선택 될 버전이 있습니다. 여기서 비슷한 질문을 찾을 수 있습니다.


1
내가 찬성했습니다. 생략 된 종속성이 무엇을 의미하는지 설명해 주시겠습니까?
java123999

1
이는 보고서의 다른 곳에서 종속성이 이미 전체 하위 종속성으로 표시되었으므로 여기서는 루트 만 있음을 의미합니다.
Opal

3
@ java123999. 종속성에는 자체 종속성이있을 수 있습니다. 또한 종속성이 두 번 나열 될 수도 있습니다. 이러한 경우 첫 번째 항목에 대한 종속성 만 인쇄되고 두 번째 항목은로 표시됩니다 (*).
Opal

1
그래서 *는 기본적으로 중복 종속성을 나타냅니다.
java123999

1
내가 적어도 x 기호를 쓸 필요가 없다면 Inwould는 다음과 같이 쓸 것입니다 : 예.
Opal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.