War

説明

Webアプリケーションアーカイブの WEB-INF/libWEB-INF/classes、または、 WEB-INF ディレクトリに最終的に置かれるファイルのために特別な処理を行う Jarタスクの拡張です。

(war タスクは、WAR ファイルの特別な配置を指定するための簡便法です。 zip や jar タスクにて、 prefixfullpath属性を使っても同じことができます。)

war タスクでは、 zip タスクから拡張された zipfileset 要素が (prefixfullpathsrc属性をつけて) 利用可能です。

パラメータ

属性 説明 必須
destfile 作成する war ファイル 必ず2つに1つ
warfile 非推奨 作成するファイルの名前 - 代わりにdestfileを使ってください
webxml 使用する配備記述子。(WEB-INF/web.xml) update が true に設定されていない限り Yes
basedir jar 作成対象ファイルのあるトップディレクトリ No
compress デフォルトのtrueにすると、データを保存するだけでなく圧縮します。 keepcompression属性がfalseに設定されていない限り、 追加したファイルだけでなくアーカイブ全体を更新時に適用します。 No
keepcompression 既存アーカイブにあるエントリ(ネストされたzipfilesets や 更新中のアーカイブ)のため、compress属性を無視して圧縮状態をそのまま使用します。 デフォルトは false。 Ant 1.6 から No
encoding アーカイブ内のファイル名に使われる文字エンコーディング。 デフォルトは UTF8。 生成されたアーカイブがJava 以外で読めなくなる可能性があるので、 この値を変更することは推奨されません。 No
filesonly ファイルエントリのみ格納します。 デフォルトは false No
includes 含むべきファイルのパターン一覧で、カンマあるいは空白で区切ります。 省略された場合全てのファイルが含められる。 No
includesfile 単一のファイル名です。この各行が includes パターンとして扱われます。 [訳注]原文の"Each line of this file"は"Each line of this attribute"の誤りだと思います。 No
excludes 除外するファイルのパターン一覧で、カンマあるいは空白で区切ります。 省略された場合、(デフォルト除外ファイルを除き)何も除外されません。 No
excludesfile 単一のファイル名です。この各行が excludes パターンとして扱われます。 [訳注]原文の"Each line of this file"は"Each line of this attribute"の誤りだと思います。 No
defaultexcludes デフォルト除外パターンを使うかどうかを指示します(yes | no)。 省略した場合、デフォルト除外パターンが使われます。 No
manifest 使用するマニフェストファイル。 No
update 既に出力先ファイルが存在する場合、 出力先ファイルを 更新するのか上書きするのかを指示します。 No
duplicate 同じファイルが見つかった場合の動作です。 有効な値は"add"、"preserve"、"fail"で、 デフォルトの値は"add"です。 No

ネストされる要素

lib

ネストされたlib要素には ファイルセットを指定します。 このファイルセットに含まれる全てのファイルは、 war ファイルの WEB-INF/lib ディレクトリに入ることになります。

classes

ネストされた classes 要素には ファイルセットを指定します。 このファイルセットに含まれる全てのファイルは、 war ファイルの WEB-INF/classes ディレクトリに入ることになります。

webinf

ネストされたwebinf要素には ファイルセットを指定します。 このファイルセットに含まれる全てのファイルは、 war ファイルのWEB-INFディレクトリに入ることになります。 このファイルセットに web.xml という名前のファイルが含まれていた場合、そのファイルは無視され、警告が表示されます。

metainf

ネストされた metainf 要素には ファイルセットを指定します。 このファイルセットに含まれる全てのファイルは、 war ファイルのMETA-INFディレクトリに入ることになります。 このファイルセットにMANIFEST.MFという名前のファイルが含まれていた場合、そのファイルは無視され、警告が表示されます。

プロジェクトのベースディレクトリに次のファイル構造があると仮定します。

thirdparty/libs/jdbc1.jar
thirdparty/libs/jdbc2.jar
build/main/com/myco/myapp/Servlet.class
src/metadata/myapp.xml
src/html/myapp/index.html
src/jsp/myapp/front.jsp
src/graphics/images/gifs/small/logo.gif
src/graphics/images/gifs/large/logo.gif

この時、myapp.war war ファイルは次により生成されます。

<war destfile="myapp.war" webxml="src/metadata/myapp.xml">
  <fileset dir="src/html/myapp"/>
  <fileset dir="src/jsp/myapp"/>
  <lib dir="thirdparty/libs">
    <exclude name="jdbc1.jar"/>
  </lib>
  <classes dir="build/main"/>
  <zipfileset dir="src/graphics/images/gifs" 
              prefix="images"/>
</war>

アーカイブには次のファイルが含まれています

WEB-INF/web.xml
WEB-INF/lib/jdbc2.jar
WEB-INF/classes/com/myco/myapp/Servlet.class
META-INF/MANIFEST.MF
index.html
front.jsp
images/small/logo.gif
images/large/logo.gif
ここでは、Ant のデフォルトマニフェストファイルを使っています。 WEB-INF/web.xmlの内容は、 src/metadata/myapp.xmlと全く同じです。

このタスクがWEB-INFディレクトリを作成しているにもかかわらず、Webアプリケーションが動かないのはおかしい、 というバグレポートをよく受け取ります。 この苦情に適合する原因は、大文字のディレクトリをすべて小文字に変えるWinZipにあります。 新たに報告をする前に、jar xvf yourwebapp.war が同じ動作をするかどうかを確認してください。

Copyright © 2000-2004 The Apache Software Foundation. All rights Reserved.

[訳注:これは漆島賢二、横田聡が翻訳し、田中ラ・マンチャ良浩が校正しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]