背景
银行渠道对接过程中,有些渠道会依赖自己的加解密sdk或者算法进行数据加密传输,有些自带的sdk和底层依赖jar会存在版本冲突的情况(A银行SDK依赖0.0.1的jar a,B银行的jar版本依赖0.0.5的jar a),在不确定对应的银行有没有针对依赖jar做个性化开发和优化的前提下,由于maven的版本管理的原因,如果不进行版本区分的话,就会导致错误引入了低版本的jar,导致多渠道间无法共用,本文就是针对这种前提下做的一种折中方案处理。
处理方案
主要解决思路是:通过修改对应冲突jar的根包前缀与maven上的groupId、artifactId和version,以此来区分各自渠道依赖的jar
涉及工具
jarjar.jar
jd-gui.exe
处理步骤
1.新建目录,把jarjar.jar和需要调整的jar放入该目录:
2.新增rule.txt文件,文件内容为:
(原始根包名使用反编译工具jd-gui.exe打开查看)
rule 原始包名.** 目标包名.@1
如:rule org.bouncycastle.** dbs.org.bouncycastle.@1
3.使用cmd切换到当前目录下:
4.在cmd窗口下执行如下命令:
java -jar jarjar.jar process rule.txt 需要修改的.jar 修改后的.jar(修改后的jar名字自定义)
如: java -jar jarjar.jar process rule.txt bcpg-jdk15on-1.64.jar test.bcpg-jdk15on-1.64.jar
5.生成的新test.bcpg-jdk15on-1.64.jar使用jd-gui.exe进行反编译发现,所有class文件的根包都改成了dbs.org.bouncycastle开头:
原始jar包根目录包名
目标jar包根目录包名