问题
spring打包, 一般会把依赖打包到一个jar文件中. 这就留造成打包后的文件提交很大, 往往在80M以上.
每次修改一点点代码, 都要发送大体积的文件给客户. 不太方便. 很麻烦.
如果能在远程中直接对jar拆包. 一键替换其中的.class文件, 之后就只发送class文件, 那么效率将大大提高. 可就太方便了.
需求
三步. jar解压拆包. 获取当前目录的.class名字, 根据名字去遍历拆包后的文件夹, 替换源文件. 再打包.
拆包和打包. jvm 原生提供一个命令jar xf, 经过测试不太稳定. 很拉胯.
偶然发现winrar居然可以. 遂封装成工具.
方案
停止jar服务. 保证操作的jar不被占用.
把.class文件(支持多个). 放在jar同级目录.
点击”拆包”, 会把当前目录唯一的jar解压拆包.
点击”替换”, 自动把当前目录的所有.class根据名字去拆包后的cache文件夹中找. 找到后替换.
所有class替换完成后. 会自动打包成jar. 名字和原来的一样.
- 只会遍历拆包后的/cache/BOOT-INF 和 根目录/cache/META-INF.