你是否有遇到过多个依赖冲突的情况呢?
你是否有遇到过需要修改别人jar文件源码的情况呢?
你是否有遇到过需要调整源码包路径的情况呢?
......
以上类似的情况随着工作经验的增加,我们或多或少都会遇到。所以这里我简单介绍一下如何更改jar文件的内容以及如何重新打包为jar文件~
整体过程只需要简单的三步就可以了:
- 获取需要修改的目标Jar文件
- 利用工具实施修改工作
- 重新打包修改后的文件并进行校验
第一步、获取Jar文件
看到这里可能有人觉得没有什么,认为所有人应该都是直接拥有这个jar文件的。其实不然,由于不同的项目集成方式不同,不是所有的都能够直接获取到对应的jar文件的。那么如何快速获取需要修改的目标Jar文件呢
除开官方能直接获取到的文件外,我个人更喜欢直接通过Maven仓库检索。而直接进入Maven仓库检索需要注意下载后面带有source的jar文件,因为source就表明了是源码而非打包进入的class文件,部分的也可以直接从Files项中找到jar文件的标识,点击即可发起下载。
Maven仓库地址:mvnrepository.com/ ,部分人可能不能很快的进入,这个就是可能就和众所周知的原因有关,这个时候你就需要有梯子了。
第二步、实施修改
实施修改工作之前你首先得确保你的电脑中有相应的环境,如果没有就得先进行环境配置。
环境配置
修改Jar文件所需要的环境非常的简单,以下两项即可:
-
Java环境
关于这一点你做java开发别告诉我没有哟,如果你真的没有去下载一个jdk安装一下,然后配置好环境变量即可。
-
jarjar.jar文件
这个确实很多人会没有,或者不知道如何配置。其实也比较简单,只需要从搜索引擎或者上述maven仓库中检索jarjar,然后下载到自己的电脑中即可。
正式修改
这里分别介绍如何直接修改包名以及如何修改jar文件里面的具体内容。
修改包名
- 在需要修改的jar文件同级目录创建一个rule.txt的文档文件(文件名随意,注意格式即可),然后在其中添加替换包名的规则:
rule 原始包名路径.** 新包名路径.@1
- 在同级目录下运行jarjar工具进行包名的修改工作
java -jar jarjar.jar process rule.txt 原始jar文件名称.jar 新的jar文件名称.jar
修改Jar文件内容
修改jar文件的内容,目前我的方式是首先将jar文件进行解压,然后使用ide或者Notepad++等工具进行直接修改或者使用检索替换全局修改指定内容。
注意:这里能修改的jar文件不要是class的,而是才有源码的,所以在下载目标jar文件的时候一定要注意需要下载带有source后缀的,这样解压出来才能正常进行修改操作。
第三步、重新打包Jar文件
如果你仅仅修改jar文件包名,可以直接使用新的jar包集成即可,如果你修改了源码内容,即修改jar包内容,这样你可以选择将源码直接放入项目现有包路径进行使用或者重新打成jar包进行集成使用。
重新打成jar文件需要使用到jar命令,这个有java环境一般都没有问题,执行以下命令即可将目标文件打包成jar文件:
jar cvf jar文件名称.jar ./(需要打包的文件或文件路径)
如此我们就把修改好的内容从新打包成了jar文件了,看到这里你是不是想到了用处还是蛮多的呢?
当然上述的方式只是其中的一种,你也可以使用其他的工具或者ide进行jar文件的打包工作。
写在最后
如果你对三方库进行了二次修改、编译、打包等操作,个人建议将官方路径做一个项目私有化调整,即修改包名路径,不然在后期项目集成过程中修改过的jar文件可能会让你的工程出现一些意料之外的冲突。同时如果针对多个三方库进行了修改,也建议做一个私有化部署,在项目内部或者团队内进行共享,以免后续工作或者其他项目误使用官方库,而出现问题。
至此建议的jar包修改和二次打包操作就介绍完了,有任何问题欢迎评论、私信交流,喜欢可以点赞收藏关注哟~