替换jar包中的yml,class等文件的方法

1.使用场景

由于线上项目中突然爆出一个bug问题,影响到用户使用,但是 线上的jar包版本,已经是很久的了,没有对应的分支版本,或者再这个分支版本上后来又提交了一些新功能。不知道该回退到哪次提交记录才能保证和线上环境的版本内容完全一致。在这种情况我们不能再当前最新的版本里进行修复问题,然后进行打包,因为当前最新的版本里会有很多不确定的问题。所以最好的办法就是线上的问题出在哪里,只对这个文件进行修改、替换、重启,这种修改影响最小。下面介绍如何替换jar中的文件,可以替换单个或多个,下面以自己线上的实际操作进行介绍。

2.先准备好待替换的文件

将本地修改后的application-zhyd-prod.yml配置文件,准备好。

3.下载服务器上的jar包

从服务器上把jar包文件下载下来,放到本地单独的一个文件夹内,查看要替换的application-zhyd-prod.yml文件在zhyd-platform-customer.jar包中所在的具体路径,命令如下:

jar -tvf zhyd-platform-customer.jar | grep application-zhyd-prod.yml
9975 Fri Jun 02 16:04:00 CST 2023 BOOT-INF/classes/application-zhyd-prod.yml

-tvf:查看jar包的内容,并不解压

4.解压出来指定的文件

jar -xvf zhyd-platform-customer.jar  BOOT-INF/classes/application-zhyd-prod.yml
BOOT-INF/classes/application-zhyd-prod.yml

-xvf:解压出来jar包的指定的文件

在这里插入图片描述
在这里插入图片描述
然后将第一步准备好的.yml文件,替换掉这里的yml文件。

5.将文件打入jar包

jar -uvf zhyd-platform-customer.jar  BOOT-INF/classes/application-zhyd-prod.yml   #单个文件
BOOT-INF/classes/application-zhyd-prod.yml

#如果BOOT-INF/classes/目录下有多个文件需要打入jar包,可以用下面的方法
jar -uvf zhyd-platform-customer.jar  BOOT-INF/classes/

-uvf:将指定路径的文件打入指定的jar内部,若有就覆盖替换。

6.查看是否替换成功

可以再次对jar进行解压出指定的文件,然后查看是否已经是最新的了。

7.将Jar重新上传至服务器

将jar包上传至服务端后,需要先启一个单独接口测试一下是否正常,然后再替换生产上的版本。
java -jar xxxxx.jar --server.port=端口号

猜你喜欢

转载自blog.csdn.net/adminstate/article/details/131050769