Gradle:如何显示依赖冲突发生的位置

Gio*_*tta 29 dependencies conflict gradle

我有一个包含许多依赖项的Gradle项目,其中一个解析如下:

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
Run Code Online (Sandbox Code Playgroud)

版本1.1必须是传递依赖,因为我明确指定了1.0.2.如何找出这种特定传递依赖的来源?

Pet*_*ser 21

回答这个问题是dependencyInsight完成任务的重点.javax.activation:activation:1.1被拉到com.sun.mail:mailapi:1.4.4com.sun.mail:smtp:1.4.4.

如果您自己的代码也依赖于javax.activation,您可以强制使用您的版本compile("javax.activation:activation:1.0.2") { force = true }.如果没有,您可以强制使用configurations.all { resolutionStrategy.force "javax.activation:activation:1.0.2" }.

  • 您可以执行`configurations.all {resulutionStrategy.failOnVersionConflict()}`,在这种情况下,Gradle将强制您在构建脚本中显式解决所有版本冲突. (3认同)
  • +1。完整示例在这里:https://www.devsbedevin.net/android-understanding-gradle-dependency-and-resolving-conflicts/ (2认同)