首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >maven:又遇到maven jar包冲突了?比较常见的处理方法及避坑

maven:又遇到maven jar包冲突了?比较常见的处理方法及避坑

作者头像
崔认知
发布2023-09-05 17:58:39
发布2023-09-05 17:58:39
2.1K0
举报
文章被收录于专栏:nobodynobody

简介


在使用Maven时,有时会遇到jar包冲突的问题,也就是多个依赖中包含了同名的jar包,在编译或运行时会导致异常。

解决maven jar包冲突的方法


1、利用maven的Exclusions功能排除依赖

2、利用maven的scope功能,限制依赖的使用范围

控制 dependency(依赖)元素的使用范围。通俗的讲,就是控制 Jar 包在哪些范围被加载和使用。这个范围包括,编译、测试、运行,并且还可以加上是否被打入包中。

Scope的作用域范围包括compile、test、provided、runtime、system、import。

上面的2种解决方法,很容易解决编译时的问题,但是运行时可能导致类或方法找不到的问题。

3、利用maven-shade-plugin的重定位类(Relocating Classes)功能,把依赖的第三方jar包重命名后打包到项目的jar包

比如Flink的大多数依赖项,如guava、netty、jackson等,都被Flink的维护人员通过重定位类维护。

这种解决方案比较实用,但是很难解决第三方依赖之间的冲突。

4、类隔离策略

为了解决运行时类冲突,很多技术都实现了类隔离策略,比如大数据框架Flink、蚂蚁金服的SOFAArk、tomcat等。

比如tomcat为了实现运行时隔离采用的类加载策略:

小结


如果又遇到maven jar包冲突了,可以使用上面比较常见的这几种处理方法来解决,每种解决方案都有其适用场景。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 认知科技技术团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如果又遇到maven jar包冲突了,可以使用上面比较常见的这几种处理方法来解决,每种解决方案都有其适用场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档