Maven - 不同版本的传递依赖

Posted

技术标签:

【中文标题】Maven - 不同版本的传递依赖【英文标题】:Maven - transitive dependencies with different versions 【发布时间】:2011-12-22 20:16:42 【问题描述】: 假设我的应用程序需要foo.jarbar.jar foo.jar 需要 c.jar 的 1.0 版 bar.jar 需要 c.jar 的 2.0 版

Maven 如何解决这个冲突?将使用哪个版本的c.jar

【问题讨论】:

【参考方案1】:

这取决于您在有效 POM 中的声明顺序。如果foo.jar 首先出现,您将获得c.jar 的1.0 版。另一方面,如果首先声明 bar.jar,它将是 c.jar 的 2.0 版。

相关documentation:

...两个依赖版本在依赖中的深度相同 树,在 Maven 2.0.8 之前,没有定义哪一个会赢,但是 从 Maven 2.0.9 开始,重要的是声明中的顺序: 第一个声明获胜

【讨论】:

这是 Maven 的犯罪设计缺陷

以上是关于Maven - 不同版本的传递依赖的主要内容,如果未能解决你的问题,请参考以下文章

是否有一个 Maven 插件可以验证传递依赖项的冲突版本?

扫描多个 maven pom 以获取不同的依赖版本

Maven + SLF4J:使用需要两个不同 SLF4J 版本的两个不同依赖项时的版本冲突

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

如何解决 npm 中不同版本的传递依赖?

maven清楚不同版本的重复依赖