Gradle:如何显示依赖冲突发生的地方 [英] Gradle: how to display where a dependency conflict arises
问题描述
我有一个具有很多依赖关系的Gradle项目,其中一个解决如下:
I have a Gradle project with many dependencies, one of which is resolved as follows:
gradle dependencyInsight --configuration compile --dependency javax.activation
:dependencyInsight
javax.activation:activation:1.1 (conflict resolution)
+--- com.sun.mail:mailapi:1.4.4
| \--- compile
\--- com.sun.mail:smtp:1.4.4
\--- compile
javax.activation:activation:1.0.2 -> 1.1
\--- compile
版本1.1必须是传递依赖关系,因为我明确指定1.0.2。如何找出这个具体的传递依赖关系来自哪里?
Version 1.1 must be a transitive dependency because I explicitly specified 1.0.2. How can I find out where this specific transitive dependency comes from?
推荐答案
回答这个问题是 dependencyInsight
任务。 javax.activation:activation:1.1
被 com.sun.mail:mailapi:1.4.4
和 com.sun.mail:SMTP:1.4.4
。
Answering this question is the whole point of the dependencyInsight
task. javax.activation:activation:1.1
is pulled in by com.sun.mail:mailapi:1.4.4
and com.sun.mail:smtp:1.4.4
.
如果您自己的代码还依赖于 javax.activation
,则可以使用 compile(javax.activation:activation:1.0.2){force = true}
。如果没有,您可以强制使用 configurations.all {resolutionStrategy.forcejavax.activation:activation:1.0.2}
。
If your own code also depends on javax.activation
, you can force your version with compile("javax.activation:activation:1.0.2") { force = true }
. If not, you can force a version with configurations.all { resolutionStrategy.force "javax.activation:activation:1.0.2" }
.
这篇关于Gradle:如何显示依赖冲突发生的地方的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!