web-dev-qa-db-ja.com

WARファイルをアンパッケージおよび再パッケージする方法

WARファイルがあります。開き、XMLファイルを編集し、いくつかのjarを削除してから、再パッケージ化します。

WINRARを使用してWARファイルを開き、いくつかのジャーを削除し、WinRarで「アーカイブに追加」を行い、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を再パッケージするにはどうすればよいですか?

36

ここで説明したJavaコマンドを使用して、コマンドラインからwarを更新できます。

jar -uvf test.war yourclassesdir 

その他の便利なコマンド:

Warファイルを解凍/展開するコマンド

jar -xvf test.war

Warファイルを作成するコマンド

jar -cvf test.war yourclassesdir 
66
Juned Ahsan

これは私のために働いた:

mv xyz.war ./tmp
cd tmp
jar -xvf xyz.war
rm -rf WEB-INF/lib/zookeeper-3.4.10.jar
rm -rf xyz.war
jar -cvf xyz.war *
mv xyz.war ../
cd ..
5
Agam

上記の回答から適応すると、これは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
3
user2066936

私はそれを行うためのANTタグがあると確信していますが、この7Zipハックを.batスクリプトで使用しました。 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アーカイブ内の1つのファイルを変更する場合は、特定のファイルを抽出してから元のアーカイブを更新するのが最適です。

1
Whome

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にファイルが更新されました。

1
Barani r

その必要はありません。Tomcatは同じ名前のフォルダーにwarファイルを自然に抽出します。そのフォルダ内の目的のファイル(.xml構成ファイルを含む)を変更するだけです。技術的には、修正を適用した後にTomcatを再起動する必要はありません

0
yasin

非プログラム的に、7Zip UIを使用してアーカイブを開くだけで、構造を変更せずにファイルを追加/削除または抽出/置換できます。今まで他のものを使うのが問題だとは知りませんでした:)

0
Griknok

たぶん、戦争の構造を変更したか、別のサーバーバージョンに展開した可能性があります。これらのリンクを確認してください JBoss AS 7(ドメインモード)へのwarのデプロイエラー: "デプロイのフェーズSTRUCTUREの処理に失敗しました" および https://community.jboss.org/thread/199387? start = 0&tstart = 0&_sscc = t

0
Barun