一个二次封装组件依赖冲突问题的解决思路

组件二次封装的冲突问题的一个记录

具体的场景是新建一个项目,使用了一个全文检索的组件,这个组件二次封装了spring-data-elasticsearch的组件,但是这个组件在别的项目上可以正常使用,但是在新的项目上出问题了,如下所示:
奇怪啊,spring封装的es中间件组件也出问题了

解决这个问题走了一些弯路

一些弯路:

  1. 以为打包的时候修改了依赖的版本,导致版本不一致问题;
  2. 以为本地加了依赖,导致没有使用组件中确定的版本;
  3. 以为这个组件本身打包的时候编译出了问题;

解决问题的思路

思路:
1.查看依赖版本发现项目中组件的依赖树跟组件原有的依赖树版本是不同的:
不正常的依赖树
正常的依赖树
2.查看是什么引用导致的组件依赖版本不一致,首先看spring-boot版本,都改成2.3.6.RELEASE,问题没有解决
使用一致的版本,排除一个问题
3.从依赖树中发现kafka的引用中有一个spring-data-commons的依赖包,版本比较高一些,需要深入spring-kafka的pom文件才能发现
这里是spring-kafka依赖的一部分
4.得出一个经验,如果两个组件都使用了相同的依赖,则比较老的依赖会自动升级成比较新的依赖,比如这个问题,spring-kafka和spring-data-elasticsearch都有相同的依赖spring-data-parent,spring-kafka则是通过spring-data-commons引用的,所以spring-data被升级了。
最终版本
5.解决方案就是使用一个parent级别的pom进行版本管理,或者exclude调不合适的版本,重新引入正确的版本。我这边采用的是前者。不过大多数情况下第二次方式解决问题比较常见。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值