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