jar包冲突解决之道(maven)

在使用maven管理依赖的java项目中,难免会遇到一个项目依赖了三方jar包的不同版本,进而导致了项目无法正常启动。这个时候就需要解决这些冲突,使得程序正常运行。下面,我来提供下我的解决方案(依赖 intelliJ idea)。

一、依赖是通过maven进行管理,且不同版本不需要并存:

1、根据程序运行日志确定报错是来自依赖冲突并确定依赖的三方的groupId和artifactId。之后按着如图1->2->3的步骤,打开某个模块的jar包依赖树。

2、在依赖图中,按ctrl+f根据artifactId进行搜索,来确认项目具体引入了同groupId和artifactId的哪几个版本:

3、从下图可以看出joda-time里面出现了两个版本,一个为2.9,一个为2.8.2。之后双击进而确定通过哪个依赖引入了这个依赖,进而通过exlusions标签进行排除。

二、产生依赖的两个版本需要并存,或者另一个是内置在某个三方依赖中。

1、例如com.google.guava guava在16版本和18版本中就没有做到兼容。但项目中依赖的phoenix-client内置了com.google.guava guava的16版本。这个时候可以使用maven-shade-plugin进行解决。

2、新建一个phoenix-client项目,里面仅依赖phoenix-client,之后在项目的pom文件的build标签里面增加一个plugin的配置,如图:

3、之后执行maven的package命令,生成使用com.shade.google.guava的phoenix-client版本,并将jar包上传到自己的maven私服,并将之前项目依赖的phoenix-client的版本修改掉即可。

PS:实际工作中,可能会遇到很多的依赖冲突,但有些冲突却恰好不需要解决(虽然依赖的版本不同,但是新版本做了兼容),但是如果有时间和精力还是尽可能的提前解决,以免留下隐患。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值