Zip

説明

ZIPファイルを作成します。

basedir属性はZIPを行うディレクトリです。

ファイルのパーミッションは、生成したZIPファイルには保存されないことに注意してください。

ZIPにするファイルの集合を絞り込むことが可能です。 これには、includesincludesfileexcludesexcludesfiledefaultexcludes属性を使用します。 includesincludesfile属性によって、 パターンを使用して包括したいファイルを指定します。 excludeexcludesfile属性では、 除外したいファイルを指定します。これもまたパターンを使用します。 最後に、defaultexcludes属性によって、 デフォルト除外集合を使うかどうかを指定できます。 ファイルの包括/除外の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスク の節を参照してください。

このタスクは暗黙のファイルセットを作成して、 ネストした<include><exclude><patternset>要素のように、 <fileset>のすべての属性 (dirbasedirになります) をサポートします。

または、ネストしたファイルセットか、ファイルセットへの参照を指定することができます。 この場合には、basedirは省略可能ですが、 暗黙のファイルセットはbasedirを指定した場合だけ使用されます。 暗黙のファイルセットを混在して使うことができます。 (basedirを設定し、 includes<include> のような付加的な副要素を追加します)。 少なくともひとつのfilesetを指定して、 ネストした<fileset>要素を明示してください。 ZIPファイルはそれぞれのfilesetの中の相対パスだけを反映します。 ZIPタスクとその派生タスクは、 zipfilesetという追加属性(以下に記述されています)の 特別なファイルセットを使用できます。

ZIPタスクはまた、複数のZIPファイルからひとつのZIPファイルへの マージをサポートしています。 これは、ネストしたファイルセットのsrc属性と 特別なネストしたファイルセットzipgroupfileset を使うことで可能です。

ZIPファイルが既に存在した場合、 updateパラメータが適用されます。 yesがセットされた場合、 ZIPファイルは指定したファイルで更新されます (新しいファイルが追加され、古いファイルは新しいバージョンに置き換えられます)。 no(デフォルト)がセットされた場合、アーカイブ内のエントリよりもより新しい ファイルがアーカイブに追加されたならば、ZIPファイルは上書きされます。 ZIPファイルは2秒の粒度で保存しますので注意してください。アーカイブ内のエントリよりも 2秒に満たない新しさのとき、Antはそれが最新でないと判断します。

whenemptyパラメータは、マッチするファイルがない時にどうするかを制御します。 skip(デフォルト)の場合には、ZIPファイルを作成せずに、警告を出力します。 failの場合には、ZIPファイルを作成せずに、ビルドがエラーで停止します。 createの場合には、ZIP互換の処理ツールに空だと認識されるZIPファイル(明示的に0エントリ)を作成します。

このタスクは現在、ファイル名にプラットホームのデフォルト文字エンコーディングを使います。 これはコマンドラインのZIPツールと同じやり方ですが、 Javaから、US-ASCIIでない文字コードを含むファイル名を 読み込もうとすると問題が発生します。 Javaで安全にZIPファイルを読み込めるように、 encoding属性を使用して、属性にUTF8にセットしてZIPファイルを作成してくだしい。

Ant 1.5.2から、<zip>はアーカイブ内にUnix パーミッションを保存できます (filemodeとdirmode属性の記述を参照 <zipfileset>)。 残念ながら、それらのパーミッションを携帯する方法はありません。 Antは、zipやunzipコマンドを実装したInfo-Zip'sで利用されているアルゴリズムを使っています。-多くのUnixやUnixライクなシステム向きの、zipやunzipのデフォルトバージョンです。-

パラメータ

属性 説明 必須
destfile 作成するZIPファイル。 必ず2つのうち1つ
zipfile 推奨されません。 destfileの古い名前。
basedir ファイルをZIPするディレクトリ No
compress デフォルトのtrueにすると、データを保存するだけでなく圧縮します。 keepcompression属性がfalseに設定されていない限り、 追加したファイルだけでなくアーカイブ全体を更新時に適用します。 No
keepcompression 既存アーカイブからのエントリ(ネストされた zipfilesets や 更新中のアーカイブ)が、 compress 属性を使っていないならば圧縮状態を保持する。 デフォルトは false。 Ant 1.6 から No
encoding ZIPファイル内のファイル名に使われる文字エンコーディング。 使用できる値のリストは http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.htmlを見てください。 デフォルトはプラットホームのデフォルト文字エンコーディング。 No
filesonly ファイルエントリーのみ格納します。デフォルトはfalse。 No
includes カンマかスペースで区切られた、包括するファイルのパターンのリスト。 省略時はすべてのファイルが含まれます。 No
includesfile ファイル名。 このファイルの各行が包括パターンとして解釈されます。 No
excludes カンマかスペースで区切られた、除外するファイルのパターンのリスト。 省略時は、(デフォルト除外集合を除いて)除外されるファイルはありません。 No
excludesfile ファイル名。 このファイルの各行が除外パターンとして解釈されます。 No
defaultexcludes デフォルト除外集合を使うかどうかを指定します("yes"/"no")。 省略時はデフォルト除外集合が使用されます。 No
update 出力ファイルが既に存在していた場合、 更新するか、上書きするかを指定します。デフォルトはfalse。 No
whenempty ファイルがマッチしない場合の動作。 有効な値は、"fail"、 "skip"、"create"。 デフォルトは"skip"です。 No
duplicate 同じファイルが見つかった場合の動作。 有効な値は"add"、"preserve"、"fail"。 デフォルトの値は"add"です。 No

ネストした要素として指定されるパラメータ

ZIPタスクは、アーカイブに含めるファイルを指定する、どのような数の <fileset> もサポートします。

zipfileset

ZIPタスクは、アーカイブに含めるファイルを指定する、どのような数の <zipfileset> もサポートします。

zipgroupfileset

<zipgroupfileset>は複数のZIPファイルをマージして 1つのアーカイブにすることを可能にします。 zipfileset srcでファイルが追加されるのと同じ方法で、 このファイルセット内で見つかったそれぞれのファイルは、アーカイブに追加されます。

  <zip destfile="${dist}/manual.zip"
       basedir="htdocs/manual"
  />

htdocs/manualディレクトリ内のすべてのファイルを、 ${dist}ディレクトリのmanual.zipにZIPします。

  <zip destfile="${dist}/manual.zip"
       basedir="htdocs/manual"
       update="true"
  />

htdocs/manualディレクトリ内のすべてのファイルを、 ${dist}ディレクトリのmanual.zipにZIPします。 manual.zipが存在しなかった場合は作成され、 そうでない場合は、新たな/変更したファイルで更新されます。

  <zip destfile="${dist}/manual.zip"
       basedir="htdocs/manual"
       excludes="mydocs/**, **/todo.html"
  />

htdocs/manualディレクトリ内のすべてのファイルをZIPします。 ディレクトリmydocs直下のファイルや、 todo.htmlという名前のファイルは除外されます。

  <zip destfile="${dist}/manual.zip"
       basedir="htdocs/manual"
       includes="api/**/*.html"
       excludes="**/todo.html"
  />

htdocs/manualディレクトリ内のすべてのファイルをZIPします。 ただし、apiディレクトリ以下のファイルのみZIPされ、 またtodo.htmlという名前のファイルは除外されます。

  <zip destfile="${dist}/manual.zip">
    <fileset dir="htdocs/manual"/>
    <fileset dir="." includes="ChangeLog.txt"/>
  </zip>

htdocs/manualディレクトリ内のすべてのファイルをZIPし、 また、カレントディレクトリのファイルChangeLog.txtを追加します。 ChangeLog.txtは、 ちょうどhtdocs/manual/ChangeLog.txtの場所にあったかのように、 ZIPファイルのルートに追加されます。

  <zip destfile="${dist}/manual.zip">
    <zipfileset dir="htdocs/manual" prefix="docs/user-guide"/>
    <zipfileset dir="." includes="ChangeLog27.txt" fullpath="docs/ChangeLog.txt"/>
    <zipfileset src="examples.zip" includes="**/*.html" prefix="docs/examples"/>
  </zip>

htdocs/manualディレクトリ内のすべてのファイルを アーカイブ内のdocs/user-guideディレクトリにZIPし、 カレントディレクトリのファイルChangeLog27.txtdocs/ChangeLog.txtとして追加し、 examples.zip内の すべてのhtmlファイルをdocs/examples以下に含めます。 作成されたアーカイブは、以下のファイルを含むでしょう。

    docs/user-guide/html/index.html
    docs/ChangeLog.txt
    docs/examples/index.html

次のコードは、

  <zip destfile="${dist}/manual.zip">
    <zipfileset dir="htdocs/manual" prefix="docs/user-guide"/>
    <zipgroupfileset dir="." includes="examples*.zip"/>
  </zip>

htdocs/manualディレクトリ内のすべてのファイルを アーカイブ内のdocs/user-guideディレクトリにZIPし、 examples1.zipexamples_for_brian.zip のような examples*.zipにマッチするファイルを含めます。


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

[訳注:これは風間一洋、宮本信二、横田聡が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]