'->' (mũi tên) trong biểu đồ phụ thuộc của gradle có nghĩa là gì?


82

Tôi đang cố gắng chạy một số thử nghiệm Android, tuy nhiên, trình biên dịch phàn nàn rằng tồn tại nhiều tệp dex.

Multiple dex files define Lorg/hamcrest/MatcherAssert;

Vì vậy, tôi đang cố gắng lọc các phần phụ thuộc trùng lặp: $ ./gradlew -q dependencies app:dependencies --configuration androidTestCompile

Tuy nhiên, tôi nhận được kết quả sau:

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

Tôi bối rối không biết các mũi tên (->) có nghĩa là gì. Có ý nghĩa gì?

Câu trả lời:


131

Nó có nghĩa là đồ thị phụ thuộc chứa nhiều phụ thuộc với các phiên bản giống nhau groupmodulenhưng khác nhau, ví dụ org.hamcrest:hamcrest-core. Gradle cố gắng tự động giải quyết các phiên bản xung đột - theo mặc định, phiên bản mới nhất được chọn. Ở phía bên trái của ->là phiên bản được yêu cầu, ở bên phải là phiên bản sẽ được chọn. Ở đây có thể tìm thấy câu hỏi tương tự.


1
Tôi đã ủng hộ, bạn có thể giải thích những phụ thuộc bị bỏ qua có nghĩa là gì không?
java123999

1
Có nghĩa là ở những nơi khác trong báo cáo, phần phụ thuộc đã được trình bày với toàn bộ phần phụ thuộc con, do đó ở đây nó chỉ là gốc.
Opal

3
@ java123999. Một phụ thuộc có thể có các phụ thuộc của chính nó. Cũng có thể xảy ra trường hợp phụ thuộc được liệt kê hai lần. Trong trường hợp này, chỉ các phần phụ thuộc cho mục nhập đầu tiên sẽ được in trong khi mục nhập thứ hai sẽ được đánh dấu bằng (*).
Opal

1
Vì vậy, về cơ bản * chỉ ra các phụ thuộc trùng lặp?
java123999

1
Nếu tôi không phải viết ít nhất dấu hiệu x, Tôi chỉ cần viết: có.
Opal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.