Maven-shade 支持同一个jar宝的不同版本解决方案
最近项目对接第三方时,遇到一个SM2解密问题,拿到第三方的密文后解密失败。首先想到C1C2C3 和C1C3C2的问题,于是......,半个小时后,决定要来第三方的sdk。
发现他们sdk依赖的jar是1.46版本,而我的项目依赖的是1.64。
要降版本吗?想到不要想,降版本会导致现有的许多方法都要重写,还要重新测试,这代价我可接受不了,还是问问度娘别人是否遇到过同样的问题吧。
最终maven-shade-plugin 插件浮现在眼前,它可以对依赖的jar包的类路径进行修改。而1.64 和1.46 两个版本冲突,就是因为同一个类在不同的版本中使用方式不同,那么我只有改变其中一个jar包的类路径,同时依赖两个包不就可以了吗。
抱着试一试的态度:
1|01、新建一个空的Maven项目
pom.xml 内容如下:
其中dependencies 中 sm-sdk 是第三方提供的工具,它依赖的就是bcprov-jdk15on 1.46版本,我要做就是将这两个包中的org.bouncycastle.xxx进行修改,关键配置如下:
2|02、install
install后在本地仓库中就生成了一个新的jar。然后可以在项目的pom.xml中加上下面的坐标,导入后,点开这个jar,会发现其内容就是sm-sdk 和 bcprov-jdk15on 的class文件,但是相关的类路径都已经变成了cloneli.bouncycastle.xxx
本地测试,看到了想要的结果,1.64 和1.46 和谐共处。
3|03、上传服务器
到这里还没有结束,不要忘记将新的jar上传公司的服务器,不然其他同事拿不到这个包。
4|0总结
这里 maven-shade-plugin 插件单纯看效果,就和我们把 sm-sdk 和 bcprov-jdk15on 中的所有类都复制到自己的项目中重写了一样,既然都重写了,改个类路径不是很合理吗?
__EOF__

本文链接:https://www.cnblogs.com/caicz/p/16531225.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-07-29 分布式事务