Jar タスクの拡張で、Web アプリケーションアーカイブのWEB-INF/lib、WEB-INF/classes、またはWEB-INF ディレクトリに配置する必要があるファイルに対して特別な処理を行います。
(War
タスクは、WAR ファイルの特定のレイアウトを指定するためのショートカットです。Zip
またはJar
タスクのzipfileset
のprefix属性とfullpath属性を使用しても同じ結果を得ることができます。)
zip
タスクからの拡張されたzipfileset
要素(prefix、fullpath、src属性付き)は、War
タスクで使用できます。このタスクはリソースも有効にしており、ネストされたリソースとリソースコレクションをアーカイブに追加します。
Servlet API 2.5/Java EE 5 より前では、WEB-INF/web.xml ファイルは WAR ファイルに必須だったため、webxml 属性が欠けている場合、このタスクは失敗しました。web.xmlファイルは現在オプションになったため、webxml属性もオプションにできます。ただし、ほとんどの実Webアプリケーションではweb.xmlファイルが必要なため、デフォルトではオプションではありません。 needxmlfile 属性が false
に設定されていない限り、ファイルが含まれていない場合、タスクは失敗します。 filesetを介して複数のweb.xmlファイルがJARに追加された場合、タスクは警告します。
Zip形式では、同じ完全修飾名を持つ複数のファイルが単一のアーカイブ内に存在することが可能です。これは、予期せぬユーザーに様々な問題を引き起こすことが文書化されています。この動作を回避する場合は、duplicate属性をデフォルトのadd
以外の値に設定する必要があります。
属性 | 説明 | 必須 |
---|---|---|
destfile | 作成するWARファイル。 | 次の2つのいずれか1つ |
warfile | 非推奨 作成するファイルの名前 - 代わりにdestfileを使用してください。 | |
webxml | 使用するサーブレット設定記述子 (WEB-INF/web.xml)。 | はい、needxmlfileがtrueでない限り、ファイルはネストされたfilesetを介して取り込まれるか、既存のWARファイルが更新されます。 |
needxmlfile | web.xmlファイルが必要かどうかを示すフラグ。web.xmlファイルがないServlet 2.5以降のWARファイル生成時にはfalseに設定する必要があります。Apache Ant 1.7以降 |
いいえ。デフォルトはtrue |
basedir | ファイルをjarするディレクトリ。 | いいえ |
compress | データを保存するだけでなく、圧縮も行います。keepcompression属性をfalseに設定しない限り、これはアーカイブ全体に適用され、更新時に追加したファイルのみに適用されるわけではありません。 |
いいえ。デフォルトはtrue |
keepcompression | 既存のアーカイブ(ネストされたzipfilesetなど、またはアーカイブの更新中)からのエントリについては、compress属性を使用する代わりに、元のままの圧縮を維持します。Ant 1.6以降 | いいえ。デフォルトはfalse |
encoding | アーカイブ内のファイル名に使用する文字エンコーディング。Javaで作成したアーカイブが読み取れなくなる可能性が高いため、この値を変更することはお勧めしません。 zipタスクページの解説も参照してください。 |
いいえ。デフォルトはUTF8 |
filesonly | ファイルエントリのみを保存します。 | いいえ。デフォルトはfalse |
includes | 含める必要があるファイルのパターンをカンマまたはスペースで区切ったリスト。 | いいえ。デフォルトはすべて(**) |
includesfile | ファイル名。このファイルの各行は、インクルードパターンとして扱われます。 | いいえ |
excludes | 除外する必要があるファイルのパターンをカンマまたはスペースで区切ったリスト。 | いいえ。defaultexcludesがnoの場合、デフォルトの除外またはなし。 |
excludesfile | ファイル名。このファイルの各行は、除外パターンとして扱われます。 | いいえ |
defaultexcludes | デフォルトの除外を使用するかどうかを示します(yes|no)。 |
いいえ。デフォルトはyes |
manifest | 使用するマニフェストファイル。 | いいえ |
filesetmanifest | zipfileset またはzipgroupfileset ファイル内でマニフェストが見つかった場合の動作。有効な値はskip、 merge、および mergewithoutmainです。 mergeはすべてマニフェストをマージし、これを他の指定されたマニフェストにマージします。 mergewithoutmainは、マニフェストのMainセクションを除くすべてをマージします。 |
いいえ。デフォルトはskip |
whenmanifestonly | ファイルが一致しない場合の動作。有効な値はfail、 skip、および createです。 |
いいえ。デフォルトはcreate |
update | 宛先ファイルが既に存在する場合に、更新するか上書きするかを示します。 | いいえ。デフォルトはfalse |
duplicate | 重複ファイルが見つかった場合の動作。有効な値はadd、 preserve、および failです。 |
いいえ。デフォルトはadd |
roundup | ファイルの変更時刻を次の偶数秒に繰り上げるかどうか。 Zipアーカイブは、2秒の粒度でファイルの変更時刻を保存するため、時刻は繰り上げられるか繰り下げられます。繰り下げると、タスクを再実行するたびにアーカイブが常に古くなったように見えるため、デフォルトは繰り上げです。繰り上げると、Webアーカイブ内のJSPがプリコンパイルされたページよりもわずかに新しいように見えるなど、別の種類の問題が発生し、プリコンパイルが無効になる可能性があります。Ant 1.6.2以降 |
いいえ。デフォルトはtrue |
level | ファイル圧縮を実行するデフォルト以外のレベル。有効な値の範囲は0(圧縮なし/最速)から 9(最大圧縮/最遅)です。Ant 1.7以降 |
いいえ |
preserve0permissions | アーカイブを更新するか、別のアーカイブからエントリを追加する場合、AntはUnixのパーミッション値0(誰もファイル/ディレクトリに対して何もできません)は、実際のパーミッションではなく、パーミッションがまったく保存されていないことを意味すると想定し、代わりに独自のデフォルト値を適用します。 元のパーミッションフィールドを本当に保持する必要がある場合は、この属性を trueに設定します。Ant 1.8.0以降 |
いいえ。デフォルトはfalse |
useLanguageEncodingFlag | エンコーディングがUTF-8の場合に、言語エンコーディングフラグを設定するかどうか。エンコーディングがUTF-8でない場合は、この設定は効果がありません。Ant 1.8.0以降。 zipタスクページの解説も参照してください。 |
いいえ。デフォルトはtrue |
createUnicodeExtraFields | Unicode追加フィールドを作成して、ファイル名をエントリのメタデータ内に2回目に保存するかどうか。 可能な値は never、 always、および not-encodeableです。これは、指定されたエンコーディングを使用してファイル名をエンコードできない場合にのみ、Unicode追加フィールドを追加します。Ant 1.8.0以降 zipタスクページの解説も参照してください。 |
いいえ。デフォルトはnever |
fallbacktoUTF8 | 指定されたエンコーディングを使用してファイル名をエンコードできない場合に、指定されたエンコーディングの代わりにUTF-8と言語エンコーディングフラグを使用するかどうか。Ant 1.8.0以降 zipタスクページの解説も参照してください。 |
いいえ。デフォルトはfalse |
mergeClassPathAttributes | 異なるマニフェスト(マニフェストをマージする場合)で見つかったClass-Path 属性をマージするかどうか。falseの場合、最後にマージされたマニフェストの属性のみが保持されます。Ant 1.8.0以降 flattenAttributesを trueに設定しない限り、マニフェスト仕様に違反する複数の Class-Path 属性を含むマニフェストになる可能性があります。 |
いいえ。デフォルトはfalse |
flattenAttributes | セクションで複数回発生する属性(これはClass-Path 属性の場合にのみ発生する可能性があります)を単一の属性にマージするかどうか。Ant 1.8.0以降 |
いいえ。デフォルトはfalse |
zip64Mode | エントリにZip64拡張機能を使用する場合。可能な値はnever、 always、および as-neededです。Ant 1.9.1以降。 zipタスクページの解説も参照してください。 |
いいえ。デフォルトはnever |
modificationtime | 保存されたすべてのファイルの変更時刻を指定された時刻に設定します。これは、1970年1月1日00:00:00Zからのミリ秒数として解釈される数値、またはオプションのタイムゾーンを含むISO 8601タイムスタンプとして解析できる文字列のいずれかです。Ant 1.10.2以降。 | いいえ |
ネストされたlib
要素はFileSetを指定します。このfilesetに含まれるすべてのファイルは、warファイルのWEB-INF/libディレクトリに配置されます。
ネストされたclasses
要素はFileSetを指定します。このfilesetに含まれるすべてのファイルは、warファイルのWEB-INF/classesディレクトリに配置されます。
ネストされたwebinf
要素はFileSetを指定します。このfilesetに含まれるすべてのファイルは、warファイルのWEB-INFディレクトリに配置されます。このfilesetにweb.xmlという名前のファイルが含まれている場合、そのファイルは無視され、警告が表示されます。
ネストされたmetainf
要素はFileSetを指定します。このfilesetに含まれるすべてのファイルは、warファイルのMETA-INFディレクトリに配置されます。このfilesetに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.gifAntのデフォルトのマニフェストファイルを使用します。WEB-INF/web.xmlの内容はsrc/metadata/myapp.xmlと同じです。
このタスクがWEB-INFディレクトリをweb-inf(すべて小文字)として作成しているというバグレポートを定期的に受けており、そのため、Webアプリケーションが機能しないのは私たちのせいであると報告されています。これらの苦情の原因はWinZipにあり、WinZipはすべて大文字のディレクトリを親切心からすべて小文字に変換します。別のレポートを提出する前に、jar xvf yourwebapp.war
が同じ動作を示すことを確認してください。
WinZipには、すべて大文字の名前を許可するオプションがあります(デフォルトではオフになっています!)。これは、メニューオプション
→構成
、表示
プロパティ/タブページで有効にできます。次に、全般
グループボックスにすべて大文字のファイル名を許可する
というオプションがあります。