unzip和jar命令更新spring boot生成的jar包

admin 2018-6-1 14620


unzip和jar命令更新spring boot生成的jar包

记录一个工作中遇到的小问题。 有一次修复一个bug,修改了spring boot项目的一个类,重新打了jar包需要scp到远程服务器。无奈当时网速巨慢,一个jar包50来M看样子得10好几分钟才能传完。本来就改了一个小地方,一个class文件而已,不到1kb,却要全量传一个50M的jar包,想想就很划不来。于是想到了远程解压jar文件后,替换class文件后直接在远程机器用jar命令生成新的jar包,可是用mvn打包习惯了居然记不得jar怎么用了,记录一下。

一个spring boot生成的jar包,使用unzip命令解压:

unzip spring-boot.jar -d spring-boot

得到的目录结构如下:

.
├── BOOT-INF
│   ├── classes
│   └── lib
├── META-INF
│   ├── MANIFEST.MF
│   └── maven
└── org
    └── springframework

其中META-INF目录下的MANIFEST.MF文件是记录入口main函数的清单文件,只要Main函数所在类名称不变,这个不用改。

org目录是spring boot启动程序要用到的luncher,不用动。只要我们依赖的lib包都没有变化,将新的class文件同步到BOOT-INF目录的classees目录后,执行jar命令打一个新包即可:

jar -fm0uv spring-boot.jar META-INF/MANIFEST.MF BOOT-INF org

其中fm0这3个命令参数是必须的,u代表更新,换成c表示新建其实也可以。v表示输出过程。f和m的顺序要讲究,保持同spring-boot.jar和META-INF/MANIFEST.MF的相对顺序一致。


最新回复 (0)
返回