【问题标题】:What does '->' (arrow) mean in gradle's dependency graph?'->'(箭头)在 gradle 的依赖图中是什么意思?
【发布时间】:2015-03-13 04:39:47
【问题描述】:

我正在尝试运行一些 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)

我对箭头 (->) 的含义感到困惑。它们是什么意思?

【问题讨论】:

    标签: java android gradle dependencies


    【解决方案1】:

    这意味着依赖关系图包含多个依赖关系,它们具有相同的groupmodule,但版本不同,例如org.hamcrest:hamcrest-core。 Gradle 尝试自动解决冲突的版本 - 默认情况下选择最新版本。 -> 的左侧是请求的版本,右侧是将选择的版本。 Here类似的问题可以找到。

    【讨论】:

    • 我投了赞成票,你能解释一下省略的依赖是什么意思吗?
    • 这意味着在报告中的其他地方,依赖项已经与整个子依赖项一起呈现,因此这里它只是根。
    • @java123999。一个依赖可能有它自己的依赖。也可能发生依赖项被列出两次的情况。在这种情况下,只会打印第一个条目的依赖项,而第二个条目将被标记为 (*)
    • 所以*基本上表示重复依赖?
    • 如果我不必写至少 x 标志我会写:是的。
    猜你喜欢
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 2021-03-28
    • 2012-07-16
    • 1970-01-01
    • 2018-10-08
    相关资源
    最近更新 更多