<?xml version="1.0" encoding="UTF-8"?>
<!--

   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.

-->
<ivy-module version="2.0">
  <info organisation="org.apache.ant"
        module="${artifact.name}"
        revision="${artifact.version}"
        publication="${artifact.publication.datetime}">
    <license name="Apache Software License 2.0"
             url="https://www.apache.org/licenses/LICENSE-2.0"/>
    <ivyauthor name="Apache Ant Development Team"
               url="https://ant.apache.org/"/>
    <description homepage="https://ant.apache.org/antlibs/compress/">
      Provides tasks and types that deal with AR, ARJ, CPIO, TAR,
      DUMP, 7Z and ZIP archives as well as BZIP2, PACK200, GZIP, LZMA,
      Snappy, LZ4, Brotli, DEFLATE, DEFLATE64 and XZ compressed files
      based on Apache Commons Compress.
    </description>
  </info>
  <configurations>
    <conf name="default" description="full antlib with all dependencies"/>
    <conf name="test" description="dependencies used for junit testing the antlib" visibility="private" />
  </configurations>
  <publications xmlns:e="urn:ant.apache.org:ivy-extras">
    <artifact name="${artifact.name}" type="pom" ext="pom"/>
    <artifact name="${artifact.name}" type="pom.asc" ext="pom.asc"/>
    <artifact name="${artifact.name}" type="jar" ext="jar"/>
    <artifact name="${artifact.name}" type="jar.asc" ext="jar.asc"/>
    <artifact name="${artifact.name}" type="source" ext="jar"
              e:classifier="sources"/>
    <artifact name="${artifact.name}" type="source.asc" ext="jar.asc"
              e:classifier="sources"/>
    <artifact name="${artifact.name}" type="javadoc" ext="jar"
              e:classifier="javadoc"/>
    <artifact name="${artifact.name}" type="javadoc.asc" ext="jar.asc"
              e:classifier="javadoc"/>
    <artifact name="${artifact.name}" type="ivy" ext="xml"
              e:classifier="ivy"/>
    <artifact name="${artifact.name}" type="ivy.asc" ext="xml.asc"
              e:classifier="ivy"/>
  </publications>
  <dependencies>
    <dependency org="org.apache.commons" name="commons-compress" rev="1.16" conf="default"/>
    <dependency org="org.tukaani" name="xz" rev="1.8" conf="default"/>
    <dependency org="org.brotli" name="dec" rev="0.1.2" conf="default"/>
    <dependency org="com.github.luben" name="zstd-jni" rev="1.3.3-1" conf="default"/>
    <dependency org="junit" name="junit" rev="4.12" conf="test->default"/>
    <dependency org="org.apache.ant" name="ant-antunit" rev="1.3"
                conf="test->default" transitive="false"  />
  </dependencies>
</ivy-module>
