【发布时间】:2018-11-29 09:28:08
【问题描述】:
我有一个项目依赖于 hibernate-core 版本 5.2.x 和 5.3.x。
我想知道 5.2.x 是从哪里来的。
使用 dependencies 任务我只能看到依赖于 5.3.x 的库。
使用dependencyInsight:
$ ./gradlew -q :mymodule:dependencyInsight --dependency hibernate-core --configuration compile
org.hibernate:hibernate-core:5.2.10.Final (selected by rule)
variant "runtime"
org.hibernate:hibernate-core:5.3.7.Final -> 5.2.10.Final
variant "runtime"
\--- org.springframework.boot:spring-boot-starter-data-jpa:2.1.0.RELEASE
+--- project :core
| \--- compile
\--- com.github.alturkovic.distributed-lock:distributed-lock-
jdbc:1.2.2
\--- project :core (*)
但是这里列出的两个包都依赖于 5.3,而不是 5.2。
那么我怎么知道这个版本是从哪里来的呢?
编辑:两个模块dependencyInsight,没有--configuration:
$ ./gradlew -q :moduleA:dependencyInsight --dependency hibernate-core
org.hibernate:hibernate-core:5.3.7.Final (selected by rule)
variant "default+runtime" [
Requested attributes not found in the selected variant:
org.gradle.usage = java-api
org.jetbrains.kotlin.platform.type = jvm
]
+--- compileClasspath
\--- org.springframework.boot:spring-boot-starter-data-jpa:2.1.0.RELEASE
+--- project :core
| \--- compileClasspath
\--- com.github.alturkovic.distributed-lock:distributed-lock-jdbc:1.2.2
\--- project :core (*)
(*) - dependencies omitted (listed previously)
A web-based, searchable dependency report is available by adding the --scan option.
$ ./gradlew -q :moduleB:dependencyInsight --dependency hibernate-core
org.hibernate:hibernate-core:5.3.7.Final
variant "runtime" [
Requested attributes not found in the selected variant:
org.gradle.usage = java-api
org.jetbrains.kotlin.platform.type = jvm
]
\--- org.springframework.boot:spring-boot-starter-data-jpa:2.1.0.RELEASE
+--- compileClasspath
\--- com.github.alturkovic.distributed-lock:distributed-lock-jdbc:1.2.2
\--- compileClasspath
(*) - dependencies omitted (listed previously)
A web-based, searchable dependency report is available by adding the --scan option.
【问题讨论】:
-
基本上 'org.hibernate:hibernate-core:5.2.10.Final (selected by rule)' 告诉 gradle 以某种方式忽略您列出的依赖项并强制使用 5.2.10.Final。您可以尝试在没有编译配置的情况下列出依赖项吗?那么运行时和编译会列出来吗?可能是这个规则是由像“Spring dependency-management-plugin”这样的弹簧模块添加的,在这里可能是一个有用的答案:stackoverflow.com/questions/37153484/…
-
如果没有您的
build.gradle文件,很难判断,尽管根据输出的第一行判断,我猜测构建变体的某些内容 -
@prophet1906 使用依赖任务是我尝试的第一件事:D
-
@JeroenSteenbeeke 不使用构建变体(这些不只是 Android 的东西吗?)