<!--
   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

       http://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>Compressing Tasks</title>
</head>

<body>

  <h2><a name="pack">Compressing Tasks</a></h2>
  <h3>Description</h3>

  <p>For each of the supported compression formats there is a
    correspondig task that compresses a resource.  These tasks are not
    based on
    their <a href="http://ant.apache.org/manual/CoreTasks/pack.html">core
    cousin tasks</a> but provide similar functionality.</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 resource to compress.</td>
      <td align="center" valign="top" rowspan="2">Yes, or a nested
        resource collection or a nested archiving task.</td>
    </tr>
    <tr>
      <td valign="top">srcfile</td>
      <td valign="top">the file to compress.</td>
    </tr>
    <tr>
      <td valign="top">dest</td>
      <td valign="top">the destination resource to create.</td>
      <td align="center" valign="top" rowspan="2">Exactly one of the
        two or a nested dest element.</td>
    </tr>
    <tr>
      <td valign="top">destfile</td>
      <td valign="top">the destination file to create.</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>

  <h4>any <a href="archive.html">archiving task</a></h4>

  <p>The task's output will be used as src.</p>

  <p>You must not specify the archiving task's dest attribute or
    nested element.</p>

  <h4>any <a href="#pack">compressing task</a></h4>

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

  <p>The task's output will be used as src.</p>

  <p>You must not specify the compressing task's dest attribute or
    nested element.</p>

  <h4>dest</h4>

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

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

  <h3><a name="bzip2">BZip2</a></h3>

  <p>Is a <a href="#pack">compressing task</a> that uses the BZIP2
    compression algorithm.</p>

  <h3><a name="gzip">GZip</a></h3>

  <p>Is a <a href="#pack">compressing task</a> that uses the GZIP
    compression algorithm.</p>

  <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">level</td>
      <td valign="top">Non-default level at which file compression
        should be performed. Valid values range from 0 (no
        compression/fastest) to 9 (maximum
        compression/slowest).  <em>Since Compress Antlib 1.5</em></td>
      <td valign="top" align="center">No</td>
    </tr>
  </table>

  <h3><a name="pack200">Pack200</a></h3>

  <p>Is a <a href="#pack">compressing 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>The source of this task must be a valid JAR archive.</p>

  <p>The created archive will not be compressed, use
    another <code>&lt;gzip&gt;</code> task to create
    a <code>pack.gz</code> archive.</p>

  <h4>Parameters</h4>
  <p>In addition to the attributes supported by all compressing 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 compressing task
    this task also supports.</p>

  <h5>property</h5>

  <p>Sets a property for the packer (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="xz">XZ</a></h3>

  <p>Is a <a href="#pack">compressing task</a> that uses the XZ
    compression algorithm.</p>

  <h3>Examples</h3>
  <pre>
    &lt;cmp:gzip src=&quot;test.tar&quot; dest=&quot;test.tar.gz&quot;
         xmlns:cmp="antlib:org.apache.ant.compress"/&gt;
</pre>

  <pre>
    &lt;cmp:bzip2 src=&quot;test.tar&quot; destfile=&quot;test.tar.bz2&quot;
          xmlns:cmp="antlib:org.apache.ant.compress"/&gt;
</pre>
  <pre>
    &lt;cmp:gzip destfile=&quot;archive.tar.gz&quot; xmlns:cmp="antlib:org.apache.ant.compress"&gt;
      &lt;url url="http://example.org/archive.tar"/&gt;
    &lt;/cmp:gzip&gt;
</pre>
  <p>downloads <i>http://example.org/archive.tar</i> and compresses it
    to <i>archive.tar.gz</i> in the project's basedir on the fly.</p>

  <pre>
    &lt;cmp:gzip xmlns:cmp="antlib:org.apache.ant.compress"&gt;
      &lt;cmp:tar&gt;
        &lt;fileset dir="src"/&gt;
      &lt;/cmp:tar&gt;
      &lt;dest&gt;
        &lt;file file=&quot;src.tar.gz&quot;/&gt;
      &lt;/dest&gt;
    &lt;/cmp:gzip&gt;
</pre>
  <p>Creates a tar archive of all files in the <i>src</i> directory,
    compresses it using GZIP and stores it in the
    file <i>src.tar.gz</i> in the project's basedir.</p>

  <pre>
    &lt;cmp:pack200 dest="foo.pack"
                 xmlns:cmp="antlib:org.apache.ant.compress"
                 src="foo.jar"&gt;
      &lt;property key="pack.effort" value="9"/&gt;
    &lt;/cmp:pack200&gt;
  </pre>
  <p>Packs <i>foo.jar</i> trying to prepare for better compression
    results by using above than normal effort.</p>

  <pre>
    &lt;cmp:gzip xmlns:cmp="antlib:org.apache.ant.compress"&gt;
      &lt;cmp:pack200&gt;
        &lt;file file=&quot;foo.jar&quot;/&gt;
      &lt;/cmp:pack200&gt;
      &lt;dest&gt;
        &lt;file file=&quot;foo.pack.gz&quot;/&gt;
      &lt;/dest&gt;
    &lt;/cmp:gzip&gt;
</pre>
  <p>Creates a deflated Pack200 archive of <i>foo.jar</i>and stores it
    in the file <i>foo.pack.gz</i> in the project's basedir.</p>

</body>
</html>
