如何解压缩和重新打包WAR文件

时间:2013-10-09 10:49:31

标签: java maven web-applications jboss7.x war

我有一个WAR文件。我想打开它,编辑XML文件,删除一些罐子,然后重新打包。

我使用WINRAR打开WAR文件,我删除了一些Jars并在WinRar中创建了一个“Add to Archive”并创建了一个WAR。

当我在jboss文件夹中部署WAR时,我遇到了异常。

   16:05:14,316 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) 
   MSC00001: Failed to start service jboss.deployment.unit."myapplication.war".
   STRUCTURE: org.jboss.msc.service.StartException in 
   service   jboss.deployment.unit."myapplication.war".STRUCTURE: 
   Failed to process phase STRUCTURE of deployment "myapplication.war"

如何重新包装WAR?

7 个答案:

答案 0 :(得分:65)

你可以使用这里提到的java命令从命令行更新你的战争:

jar -uvf test.war yourclassesdir 

其他有用的命令:

解压缩/爆炸war文件的命令

jar -xvf test.war

创建war文件的命令

jar -cvf test.war yourclassesdir 

答案 1 :(得分:3)

根据上述答案,这适用于Tomcat,但也适用于JBoss或任何容器:

sudo -u tomcat /opt/tomcat/bin/shutdown.sh
cd /opt/tomcat/webapps
sudo mkdir tmp; cd tmp
sudo jar -xvf ../myapp.war
#make edits...
sudo vi WEB-INF/classes/templates/fragments/header.html
sudo vi WEB-INF/classes/application.properties
#end of making edits
sudo jar -cvf myapp0.0.1.war *
sudo cp myapp0.0.1.war ..
cd ..
sudo chown tomcat:tomcat myapp0.0.1.war
sudo rm -rf tmp
sudo -u tomcat /opt/tomcat/bin/startup.sh

答案 2 :(得分:1)

我确信有一些ANT标签可以做到但是在.bat脚本中使用了这个7zip hack。我使用http://www.7-zip.org/命令行工具。我一直用这个来改变j2ee context.xml文件中的jdbc url。

mkdir .\temp-install
c:\apps\commands\7za.exe x -y mywebapp.war META-INF/context.xml -otemp-install\mywebapp
..here I have small tool to replace text in xml file..
c:\apps\commands\7za.exe u -y -tzip mywebapp.war ./temp-install/mywebapp/*
rmdir /Q /S .\temp-install

你可以提取整个.war文件(毕竟是它的zip),删除文件,替换文件,添加文件,修改文件和重新打包到.war存档文件。但是,在大型.war存档中更改一个文件可能最好提取特定文件,然后更新原始存档。

答案 3 :(得分:1)

将war文件复制到/ tmp 现在提取内容:

cp warfile.war /tmp
cd /tmp
unzip warfile.war
cd WEB-INF
nano web.xml (or vim or any editor you want to use)
cd ..
zip -r -u warfile.war WEB-INF

现在你已经在/tmp/warfile.war中更新了你的文件。

答案 4 :(得分:0)

也许,您已经修改了战争的结构或将其部署在不同的服务器版本上。查看这些链接Error deploying war into JBoss AS 7 (domain mode): "Failed to process phase STRUCTURE of deployment"https://community.jboss.org/thread/199387?start=0&tstart=0&_sscc=t

答案 5 :(得分:0)

非编程方式,您只需使用7zip UI打开存档即可添加/删除或提取/替换文件,而不会更改结构。直到现在我还不知道使用其他东西是个问题:)

答案 6 :(得分:0)

不需要那样,tomcat自然地将war文件解压缩到同名的文件夹中。 你只需修改该文件夹中的所需文件(包括.xml配置文件),就是这样。 技术上不需要在应用修改后重启tomcat