更新jar包中的部分文件

spring boot打的胖jar包比较大,向生产环境部署时不想每次都重新传完整的jar包。如果在生产环境中已经有了胖jar的旧版本old.jar,在开发环境中打一个胖jar的新版本new.jar。不传完整的new.jar(因为太大)而更新生产环境jar包的步骤:

1. 在开发环境中把new.jar解压 jar -xvf new.jar ,找到 BOOT_INF/classes 目录,所有自己编写的类都在这里,对其单独打包,上传到生产机上。

2. 在生产机上,把old.jar解压 jar -xvf old.jar ,得到三个目录:BOOT_INF, META_INF, org。用更新文件替换 BOOT_INF/classes 目录

3. 在生产机上,把 BOOT_INF, META_INF, org 打包 jar -cfM0 new.jar BOOT_INF/ META_INF/ org/
参数说明:
1) 阻止jar打包时重新生成清单列表, -M 不配置配置清单,这样还可以使用maven生成的配置清单也就是MANIFEST.MF
2) jar打包时不进行压缩 -0

如果不用-M,生成的jar包无法执行,执行java -jar xxx.jar 报错
no main manifest attribute in xxx.jar

此条目发表在计算机技术分类目录。将固定链接加入收藏夹。