当前位置: 代码网 > it编程>编程语言>Java > Maven版本冲突的三种解决方法

Maven版本冲突的三种解决方法

2024年10月22日 Java 我要评论
一、依赖传递jar包冲突一般都和依赖传递原则有关。1、最短路径优先原则:假如引入了两个jar包a、b,都依赖z这个jar包,a -> y -> x -> z(2.5)b ->

一、依赖传递

jar包冲突一般都和依赖传递原则有关。

1、最短路径优先原则:

假如引入了两个jar包a、b,都依赖z这个jar包,

a -> y -> x -> z(2.5)

b -> x -> z(2.0)

那么最终生效的是z(2.0)版本。

2、最先声明优先原则

如果路径长短一样,优先选择先声明的那个,

a -> z(3.0)

b -> z(3.5)

这里a最先声明,所以依赖z(3.0)。

注意:

1、当出现jar包冲突时,一般建议采用高版本的jar包,因为高版本的jar在设计时一般会考虑向下兼容。只有高版本jar包不向下兼容才有可能导致这样的问题。

2、maven 加载jar包的优先级顺序:项目子module对应的jar包 > 本地仓库jar包 > 远程仓库的jar包

二、如何解决?

1、依赖排除exclusions:将冲突的依赖排除

2、版本锁定

一般在项目中会有多个module,每一个module都会有很多外部依赖,而多种依赖可能都依赖了jar包y,就涉及到了多个版本,如果用排除法的话,需要一个一个的进行exclusion,过于繁琐。所以一般在父级pom标明版本,则这样对于jar包的依赖就只会保留4.1.2这个版本了。值得注意的是ependencymanagement标签只能做依赖仲裁管理使用,他并不会引入对jar包的依赖。

3、使用maven-shade-plugin插件

参考:

到此这篇关于maven版本冲突的三种解决方法的文章就介绍到这了,更多相关maven版本冲突内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com