如何在不解压缩的情况下更改 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
部署在所有环境上,而不是每个环境一个,这样更不容易出错。
这是我的 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
部署在所有环境上,而不是每个环境一个,这样更不容易出错。