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を再パッケージするにはどうすればよいですか?
ここで説明したJavaコマンドを使用して、コマンドラインからwarを更新できます。
jar -uvf test.war yourclassesdir
その他の便利なコマンド:
Warファイルを解凍/展開するコマンド
jar -xvf test.war
Warファイルを作成するコマンド
jar -cvf test.war yourclassesdir
これは私のために働いた:
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 ..
上記の回答から適応すると、これは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
私はそれを行うための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つのファイルを変更する場合は、特定のファイルを抽出してから元のアーカイブを更新するのが最適です。
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にファイルが更新されました。
その必要はありません。Tomcatは同じ名前のフォルダーにwarファイルを自然に抽出します。そのフォルダ内の目的のファイル(.xml構成ファイルを含む)を変更するだけです。技術的には、修正を適用した後にTomcatを再起動する必要はありません
非プログラム的に、7Zip UIを使用してアーカイブを開くだけで、構造を変更せずにファイルを追加/削除または抽出/置換できます。今まで他のものを使うのが問題だとは知りませんでした:)
たぶん、戦争の構造を変更したか、別のサーバーバージョンに展開した可能性があります。これらのリンクを確認してください JBoss AS 7(ドメインモード)へのwarのデプロイエラー: "デプロイのフェーズSTRUCTUREの処理に失敗しました" および https://community.jboss.org/thread/199387? start = 0&tstart = 0&_sscc = t