<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Uncompressing Tasks</title>
</head>

<body>

<h2><a name="unpack">Uncompressing Tasks</a></h2>
<h3>Description</h3>

<p>For each of the supported compression formats there is a
  correspondig task that uncompresses a resource.  These tasks are
  based on
  their <a href="http://ant.apache.org/manual/CoreTasks/unpack.html">core
  cousin tasks</a>.</p>

<p>If <i>dest</i> is a directory the name of the destination file is
the same as <i>src</i> (with the compression specific
extension removed if present). If <i>dest</i> is omitted, the parent
dir of <i>src</i> is taken. The file is only expanded if the source
resource is newer than the destination file, or when the destination file
does not exist.</p>

<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">src</td>
    <td valign="top">the file to expand.</td>
    <td align="center" valign="top">Yes, or a nested resource collection.</td>
  </tr>
  <tr>
    <td valign="top">dest</td>
    <td valign="top">the destination file or directory.</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr>
    <td valign="top">
      <a name="decompressConcatenated">decompressConcatenated</a></td>
    <td valign="top">Only for the formats that support files holding
      multiple compressed streams (bzip2, gzip and xz).<br/>
      If set to true all streams will be concatenated and treated as a
      single resource.  With the default value false only the first
      stream is uncompressed.</td>
    <td align="center" valign="top">No</td>
  </tr>
</table>
<h3>Parameters specified as nested elements</h3>

<h4>any <a href="http://ant.apache.org/manual/CoreTypes/resources.html">resource</a> or single element
resource collection</h4>

<p>The specified resource will be used as src.</p>

<h3><a name="bunzip2">BUnZip2</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses the BZIP2
  compression algorithm.</p>

<p>This task supports
  the <a href="#decompressConcatenated">decompressConcatenated</a>
  attribute.</p>

<h3><a name="gunzip">GUnZip</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses the GZIP
  compression algorithm.</p>

<p>This task supports
  the <a href="#decompressConcatenated">decompressConcatenated</a>
  attribute.</p>

<h3><a name="unbrotli">unbrotli</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses the Brotli
  compression algorithm.</p>

  <p><em>Since Compress Antlib 1.5</em>

<h3><a name="undeflate">Undeflate</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses the DEFLATE
  compression algorithm.</p>

  <p><em>Since Compress Antlib 1.5</em>

  <p>This task supports the following additional attributes:</p>

  <table border="1" cellpadding="2" cellspacing="0">
    <tr>
      <td valign="top"><b>Attribute</b></td>
      <td valign="top"><b>Description</b></td>
      <td align="center" valign="top"><b>Required</b></td>
    </tr>
    <tr>
      <td valign="top">zlibheader</td>
      <td valign="top">Whether to expect ZLIB headers. Unfortunately
      it is currently not possible to detect whether zlib headers have
      been used.</td>
      <td valign="top" align="center">No, defaults to <code>true</code></td>
    </tr>
  </table>

<h3><a name="undeflate64">Undeflate64</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses the DEFLATE64
  compression algorithm.</p>

  <p><em>Since Compress Antlib 1.6</em>

<h3><a name="unlz4">UnLZ4</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses the LZ4
  compression algorithm.</p>

<p><em>Since Apache Compress Antlib 1.5</em>.</p>

<p>This task supports
  the <a href="#decompressConcatenated">decompressConcatenated</a>
  attribute if the frame format is used.</p>

<h4>Parameters</h4>
  <p>In addition to the attributes supported by all uncompressing task
    this task also supports.</p>
  <table border="1" cellpadding="2" cellspacing="0">
    <tr>
      <td valign="top"><b>Attribute</b></td>
      <td valign="top"><b>Description</b></td>
      <td align="center" valign="top"><b>Required</b></td>
    </tr>
    <tr>
      <td valign="top">framed</td>
      <td valign="top">Whether the input is expected to use
      the <a href="http://lz4.github.io/lz4/lz4_Frame_format.html">frame
     format</a>.</td>
      <td align="center" valign="top">No, defaults to true.</td>
    </tr>
  </table>

  <h3><a name="unlzma">UnLZMA</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses the LZMA
  compression algorithm.</p>

<h3><a name="unpack200">Unpack200</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses
  the <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/jar/Pack200.html">Pack200</a>
  compression algorithm.</p>

<p>This task does not work on defalted archives, you need to wrap
  deflated archives into <code>gunzipresource</code>s in order to use
  them.

  <h4>Parameters</h4>
  <p>In addition to the attributes supported by all uncompressing task
    this task also supports.</p>
  <table border="1" cellpadding="2" cellspacing="0">
    <tr>
      <td valign="top"><b>Attribute</b></td>
      <td valign="top"><b>Description</b></td>
      <td align="center" valign="top"><b>Required</b></td>
    </tr>
    <tr>
      <td valign="top">pack200strategy</td>
      <td valign="top">Apache Commons Compress' Pack200 streams cache
        the archive data either in memory or in a temporary file.
        User this attribute to control which strategy is chosen.
        Valid values are "in-memory" and "temp-file".</td>
      <td align="center" valign="top">No, defaults to in-memory.</td>
    </tr>
  </table>

  <h4>Parameters specified as nested elements</h4>
  <p>In addition to the nested elements supported by all uncompressing task
    this task also supports.</p>

  <h5>property</h5>

  <p>Sets a property for the unpacker (see the Pack200 javadocs for
    details).</p>

  <table border="1" cellpadding="2" cellspacing="0">
    <tr>
      <td valign="top"><b>Attribute</b></td>
      <td valign="top"><b>Description</b></td>
      <td align="center" valign="top"><b>Required</b></td>
    </tr>
    <tr>
      <td valign="top">key</td>
      <td valign="top">Name of the property.</td>
      <td align="center" valign="top">Yes.</td>
    </tr>
    <tr>
      <td valign="top">value</td>
      <td valign="top">Value of the property.</td>
      <td align="center" valign="top">Yes.</td>
    </tr>
  </table>

<h3><a name="unsnappy">UnSnappy</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses
  the <a href="https://github.com/google/snappy">Snappy</a>
  compression algorithm.</p>

<p><em>Since Apache Compress Antlib 1.4</em>.</p>

<h4>Parameters</h4>
  <p>In addition to the attributes supported by all uncompressing task
    this task also supports.</p>
  <table border="1" cellpadding="2" cellspacing="0">
    <tr>
      <td valign="top"><b>Attribute</b></td>
      <td valign="top"><b>Description</b></td>
      <td align="center" valign="top"><b>Required</b></td>
    </tr>
    <tr>
      <td valign="top">framed</td>
      <td valign="top">Whether the input is expected to use
      the <a href="https://github.com/google/snappy/blob/master/framing_format.txt">framing
     format</a>.</td>
      <td align="center" valign="top">No, defaults to true.</td>
    </tr>
  </table>

<h3><a name="unxz">UnXZ</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses the XZ
  compression algorithm.</p>

<p>This task supports
  the <a href="#decompressConcatenated">decompressConcatenated</a>
  attribute.</p>

<h3><a name="unz">UnZ</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses the .Z
  compression algorithm.</p>

<p><em>Since Apache Compress Antlib 1.4</em>.</p>

<h3><a name="unzstd">UnZstd</a></h3>

<p>Is an <a href="#unpack">uncompressing task</a> that uses the Zstandard
  compression algorithm.</p>

<p><em>Since Apache Compress Antlib 1.6</em>.</p>

<h3>Examples</h3>
<blockquote><pre>
&lt;cmp:gunzip src=&quot;test.tar.gz&quot; xmlns:cmp="antlib:org.apache.ant.compress"/&gt;
</pre></blockquote>
<p>expands <i>test.tar.gz</i> to <i>test.tar</i></p>
<blockquote><pre>
&lt;cmp:bunzip2 src=&quot;test.tar.bz2&quot; xmlns:cmp="antlib:org.apache.ant.compress"/&gt;
</pre></blockquote>
<p>expands <i>test.tar.bz2</i> to <i>test.tar</i></p>
<blockquote><pre>
&lt;cmp:gunzip src=&quot;test.tar.gz&quot; dest=&quot;test2.tar&quot; xmlns:cmp="antlib:org.apache.ant.compress"/&gt;
</pre></blockquote>
<p>expands <i>test.tar.gz</i> to <i>test2.tar</i></p>
<blockquote><pre>
&lt;cmp:gunzip src=&quot;test.tar.gz&quot; dest=&quot;subdir&quot; xmlns:cmp="antlib:org.apache.ant.compress"/&gt;
</pre></blockquote>
<p>expands <i>test.tar.gz</i> to <i>subdir/test.tar</i> (assuming
subdir is a directory).</p>
<blockquote><pre>
&lt;cmp:gunzip dest=&quot;.&quot; xmlns:cmp="antlib:org.apache.ant.compress"&gt;
  &lt;url url="http://example.org/archive.tar.gz"/&gt;
&lt;/cmp:gunzip&gt;
</pre></blockquote>
<p>downloads <i>http://example.org/archive.tar.gz</i> and expands it
to <i>archive.tar</i> in the project's basedir on the fly.</p>
<blockquote><pre>
&lt;cmp:unpack200 dest=&quot;foo.jar&quot; xmlns:cmp="antlib:org.apache.ant.compress"&gt;
  &lt;cmp:gzipresource&gt;
    &lt;file file="foo.pack.gz"/&gt;
  &lt;/cmp:gzipresource&gt;
&lt;/cmp:unpack200&gt;
</pre></blockquote>
<p>Unpacks the deflated Pack200 archive <i>foo.pack.gz</i> and stores
  it as <i>foo.jar</i>.</p>

<h3>Related tasks</h3>

<pre>
&lt;cmp:gunzip src="some-archive.gz" dest="some-dest-dir" xmlns:cmp="antlib:org.apache.ant.compress"/&gt;
</pre>

is identical to

<pre>
&lt;copy todir="some-dest-dir"&gt;
  &lt;cmp:gzipresource xmlns:cmp="antlib:org.apache.ant.compress"&gt;
    &lt;file file="some-archive.gz"/&gt;
  &lt;/cmp:gzipresource&gt;
  &lt;mapper type="glob" from="*.gz" to="*"/&gt;
&lt;/copy&gt;
</pre>

<p>The same is also true for <code>&lt;bunzip2&gt;</code> and
<code>&lt;bzip2resource&gt;</code>.  <code>&lt;copy&gt;</code> offers
additional features like <a
href="http://ant.apache.org/manual/CoreTypes/filterchain.html">filtering
files</a> on the fly,
allowing a file to be mapped to multiple destinations, preserving the
last modified time or a configurable file system timestamp
granularity.</p>

</body>
</html>
