【转】解决多版本依赖jar(需共存时的)冲突问题

1、jar包冲突

由于项目中使用的对外传输加密组件是内部自己定制开发的,所以和第三方对接时,通常会连同加密组件包和调用demo一起提供给对方。而基于国产密码算法的加密组件一般都依赖于bc加密包,我方使用的bc包版是:

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.70</version>
</dependency>

有些对接方使用的bc包版本是:

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk16</artifactId>
    <version>1.46</version>
</dependency>

由于我方提供的依赖包使用的版本bcprov-jdk15on导致对接方出现jar包冲突的问题,为了彻底根除此类问题,决定修改我方依赖的bc组件的包路径,这样彻底与其他版本的bc包隔离开,从而解决bc包冲突问题。

下载地址:https://download.csdn.net/download/liuyuxuan2388/88562896

2、 冲突解决

这里使用google的jarjar组件进行包路径修改:

<dependency>
    <groupId>com.googlecode.jarjar</groupId>
    <artifactId>jarjar</artifactId>
    <version>1.3</version>
</dependency>

配置好需要调整的包路径规则文件rule.txt:

rule org.bouncycastle.**  shadow.bouncycastle.@1

将相关原料放到一个目录下:

最后在命令行执行java命令: 

java -jar jarjar-1.3.jar process rule.txt bcprov-jdk15on-1.70.jar shadow-bcprov-jdk15on-1.70.jar

如上图shadow-bcprov-jdk15on-1.70.jar就是我们新生成的jar包:

包路径已完全调整,然后将我方的定制加密组件进行反编译重新打包,依赖bc包的部分全部调整为shadow前缀的包即可。

3、小结

本文以解决bc包冲突为例,分享使用修改包路径方式解决多版本依赖冲突问题,修改包路径后的依赖将和冲突包彻底隔离开。随手记录,感谢阅读,希望本文能够给您带来一丝启发和帮助

 下载地址:https://download.csdn.net/download/liuyuxuan2388/88562896

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值