Unjar/Untar/Unwar/Unzip

説明

zipファイル、warファイル、またはjarファイルを解凍します。

PatternSetを使用して、アーカイブから抽出するファイルを選択します。PatternSetを使用しない場合、すべてのファイルが抽出されます。

リソースコレクションを使用して、解凍を実行するアーカイブファイルを選択できます。Unjar/Unwar/Unzipは、ファイルシステムベースのリソースコレクションのみをサポートします。これには、filesetfilelistpath、およびfilesが含まれます。Untarは任意のリソースコレクションをサポートします。Apache Ant 1.7より前では、ネストされた要素としてfilesetのみがサポートされていました。

ネストされたmapper要素を使用して、ファイル名の変換を定義できます。デフォルトのmapperはidentity mapperです。

抽出されたファイルのファイルパーミッションは復元されません。

untarタスクは、GNU tarによって使用される長いパス名エントリを認識します。

ご注意ください タイムゾーンオフセット計算をファイルに適用する場合、異なるZIPツールはタイムスタンプを異なる方法で処理します。一部のZIPライブラリは、ファイルシステムから読み取ったままのタイムスタンプを保存しますが、他のライブラリはファイルの読み書き時にタイムスタンプを変更して、すべてのタイムスタンプが同じタイムゾーンを使用するようにします。あるライブラリによって作成されたZIPアーカイブは、別のライブラリによって抽出されると、「間違ったタイムスタンプ」を持つファイルが抽出される可能性があります。

AntのZIPクラスは、InfoZIPツールおよびzlib(タイムスタンプが調整されます)と同じアルゴリズムを使用します。Windowsの「圧縮フォルダー」機能とWinZIPはタイムスタンプを変更しません。つまり、Windowsの圧縮フォルダー機能によって作成されたファイルに対してunzipタスクを使用すると、「間違った」タイムスタンプを持つファイルが作成される可能性があり、Antによって生成されたZIPアーカイブをWindowsの機能を使用して抽出する場合も同様です。

パラメータ

属性 説明 必須
src 展開するアーカイブファイル。 はい(filesetを使用する場合を除く)
dest 展開されたファイルを格納するディレクトリ。 はい
overwrite アーカイブ内の対応するエントリよりも新しい場合でも、ファイルを上書きします(true|false)。 いいえ。デフォルトはtrue
compression 注記: この属性はuntarタスクでのみ使用できます。
圧縮方法。許可される値はnonegzipxz、およびbzip2です。
いいえ。デフォルトはnone
encoding zipファイル内のファイル名に使用された文字エンコーディング。可能な値のリストについては、サポートされているエンコーディングを参照してください。
デフォルトのJVM文字エンコーディングには、マジック値native-encodingを使用します。
zipタスクページの解説も参照してください。
いいえ。unzipの場合はUTF8untarタスクの場合はデフォルトのJVM文字エンコーディングがデフォルトです。
failOnEmptyArchive 空のアーカイブの抽出を試行することをエラーとするかどうか。Ant 1.8.0以降 いいえ。デフォルトはfalse
stripAbsolutePathSpec Antが抽出されたファイル名から先頭の/または\文字を削除してから抽出するかどうか。これは、include/excludeパターンを適用する前、および(存在する場合)ネストされたmapperを使用する前に、エントリ名を変更することに注意してください。Ant 1.8.0以降 いいえ。Ant 1.10.4以降はtrueがデフォルトです(それ以前はfalseがデフォルトでした)。
scanForUnicodeExtraFields 注記: この属性はuntarタスクでは使用できません。
アーカイブにUnicode追加フィールドが含まれている場合は、それらを使用してファイル名を設定し、指定されたエンコーディングを無視します。
zipタスクページの解説も参照してください。
いいえ。デフォルトはtrue
allowFilesToEscapeDest 抽出されたファイルまたはディレクトリがdestディレクトリの外部にあることを許可するかどうか。Ant 1.10.4以降 いいえ、stripAbsolutePathSpecfalseで、エントリ名が先頭のパス指定で始まる場合を除き、デフォルトはfalseです。

<unzip src="${tomcat_src}/tools-src.zip" dest="${tools.home}"/>
<gunzip src="tools.tar.gz"/>
<untar src="tools.tar" dest="${tools.home}"/>
<unzip src="${tomcat_src}/tools-src.zip"
       dest="${tools.home}">
    <patternset>
        <include name="**/*.java"/>
        <exclude name="**/Test*.java"/>
    </patternset>
</unzip>
<unzip dest="${tools.home}">
    <patternset>
        <include name="**/*.java"/>
        <exclude name="**/Test*.java"/>
    </patternset>
    <fileset dir=".">
        <include name="**/*.zip"/>
        <exclude name="**/tmp*.zip"/>
    </fileset>
</unzip>
<unzip src="apache-ant-bin.zip" dest="${tools.home}">
    <patternset>
        <include name="apache-ant/lib/ant.jar"/>
    </patternset>
    <mapper type="flatten"/>
</unzip>

ant.jarimagesディレクトリ(またはその下にある場所)に格納されているすべての画像を抽出します。抽出時にディレクトリ構造(images)は保持されます。

<unzip src="${ant.home}/lib/ant.jar" dest="...">
  <patternset>
    <include name="images/"/>
  </patternset>
</unzip>

ant.jarからant_logo_large.gifLICENSE.txtの2つのファイルを抽出します。より正確には:ソースファイルのどこからでもこれらの名前を持つすべてのファイルを抽出します。抽出時にディレクトリ構造は保持されます。

<unzip src="${ant.home}/lib/ant.jar" dest="...">
  <patternset>
    <include name="**/ant_logo_large.gif"/>
    <include name="**/LICENSE.txt"/>
  </patternset>
</unzip>

関連タスク

タスク

<unzip src="some-archive" dest="some-dir">
  <patternset>
    <include name="some-pattern"/>
  </patternset>
  <mapper type="some-mapper"/>
</unzip>

は〜と同一です

<copy todir="some-dir" preservelastmodified="true">
  <zipfileset src="some-archive">
    <patternset>
      <include name="some-pattern"/>
    </patternset>
  </zipfileset>
  <mapper type="some-mapper"/>
</copy>

<untar><tarfileset>についても同様です。<copy>は、ファイルのフィルタリングなどの追加機能を提供し、ファイルを複数の宛先にマップしたり、ファイルシステムのタイムスタンプの粒度を設定したりできます。

zipファイルからファイルを「削除」します。

<zip destfile="new.jar">
  <zipfileset src="old.jar">
    <exclude name="do/not/include/this/class"/>
  </zipfileset>
</zip>