如何在不解压缩的情况下更改 war 中 web-inf/classes 目录中的文件?

how to change a file in web-inf/classes directory in war without unpacking?

这是我的 war 文件的结构。

MyApp.war
      WEB-INF
          classes/com/info/App.java
          classes/application.properties
          lib/
      META-INF
      test  

就在将此 war 部署到 tomcat 之前,Ops 团队将需要更新 application.properties 文件。

我宁愿不爆炸。但只是为了更新 war 并让 tomcat 在启动期间爆炸

我试过了

jar uvf MyApp.war /var/data/prod/application.properties

执行此命令后,我看到在 MyApp.war 的根级别添加了一个新文件。但我希望 WEB-INF/classes/application.properties 被替换为这个。我该怎么做。

这个怎么样....

mkdir -p /tmp/MyApp.war/WEB-INF/classes
cp  /var/data/prod/application.properties /tmp/MyApp.war/WEB-INF/classes
jar -uvf MyApp.war -C /tmp/MyApp.war WEB-INF
rm -rf /tmp/MyApp.war

无论如何,我认为这不是好方法,您应该外部化您的配置文件,因为它将从一个环境更改为另一个环境,所以它不应该是你档案的一部分。您应该调整您的代码,以便能够从外部文件夹中读取您的应用程序的配置。然后,您的 Ops 团队将有相同的 war 部署在所有环境上,而不是每个环境一个,这样更不容易出错。