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

Posted

技术标签:

【中文标题】Gradle:如何显示发生依赖冲突的位置【英文标题】:Gradle: how to display where a dependency conflict arises 【发布时间】:2014-02-14 05:03:36 【问题描述】:

我有一个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

版本 1.1 必须是传递依赖,因为我明确指定了 1.0.2。我怎样才能找出这个特定的传递依赖来自哪里?

【问题讨论】:

【参考方案1】:

回答这个问题是dependencyInsight 任务的重点。 javax.activation:activation:1.1com.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 将强制您在构建脚本中明确解决所有版本冲突。 您可以通过gradle dependencies 获得一些信息。如果您需要更多,可以使用gradle dependencyInsight(针对特定依赖项)。 +1。完整示例:devsbedevin.net/…

以上是关于Gradle:如何显示发生依赖冲突的位置的主要内容,如果未能解决你的问题,请参考以下文章

终极方案:快速解决Android项目依赖冲突

slf4j依赖包冲突

Android Gradle 插件Android 依赖管理 ⑤ ( Gradle 依赖优化 | 命令行查看依赖模块 | 依赖冲突问题 | 依赖传递冲突 | 分库冲突 | 依赖分组不同导致冲突 )

Gradle 依赖&解决依赖冲突

处理Gradle依赖冲突

如何快速的解决Maven依赖冲突