要替换的文件在 jar/war 包的根目录
# 如要替换 test.war 包里的 test.xml
[xuwu@localhost ~]$ jar uvf test.war test.xml
要替换的文件在 jar/war 包的其他目录
# 如果不知道想改的文件在哪个目录,可以用 grep 查看下
[xuwu@localhost ~]$ jar tvf test.war | grep application.yml
507 Tue Dec 25 09:45:48 CST 2018 WEB-INF/classes/application.yml
## 解压该文件,该目录下会生成该文件的目录结构
[xuwu@localhost ~]$ jar xvf test.war
[xuwu@localhost ~]$ ll
drwxrwxr-x 3 xuwu xuwu 4096 12月 6 21:54 META-INF
drwxrwxr-x 4 xuwu xuwu 4096 12月 6 21:54 WEB-INF
## 修改 WEB-INF/classes/application.yml 修改的内容,然后替换 war 包相应文件
[xuwu@localhost ~]$ jar uvf test.war WEB-INF/classes/application.yml
扩展
- 可以把与环境相关的文件直接放在服务器上,上线时用服务器本地的文件替换,防止开发打错包
- 增量打包,很多时候开发只是修改其中一个文件,没必要重新打包,直接替换该文件即可
jar 常见用法
# 解压 .jar/.war 文件到当前目录
jar -xvf file.jar
# 列出 .jar/.war 文件内容
jar -tf file.jar
-v 在标准输出中生成详细输出
-u 更新现有文件
-c 创建新归档文件
-f 指定归档文件名
-x 解档文件
-t 列出归档文件内容
-0 仅存储; 不使用任何 ZIP 压缩(把jar包放进war必须把这个参数加上)