<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"?>
<!--
  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.
-->
<rdf:RDF xml:lang="en"
         xmlns="http://usefulinc.com/ns/doap#" 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:asfext="http://projects.apache.org/ns/asfext#">
  <Project rdf:about="http://ant.apache.org/antlibs/compress/">
    <created>2009-07-31</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache Compress Ant Library</name>
    <homepage rdf:resource="http://ant.apache.org/antlibs/compress/" />
    <asfext:pmc rdf:resource="http://ant.apache.org/" />
    <shortdesc>Provides Support for Some Archive Formats not Supported by Ant's Core</shortdesc>
    <description>This is a library of Ant tasks and types uses Apache
      Commons Compress to support additional archive formats like ar,
      pack200, xz and cpio.</description>
    <bug-database rdf:resource="http://issues.apache.org/bugzilla/buglist.cgi?product=Ant" />
    <mailing-list rdf:resource="http://ant.apache.org/mail.html" />
    <download-page rdf:resource="http://ant.apache.org/antlibs/bindownload.cgi" />
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/build-management" />
    <release>
      <Version>
        <name>Apache Compress Ant Library 1.4</name>
        <created>2014-01-29</created>
        <revision>1.4</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache Compress Ant Library 1.3</name>
        <created>2013-11-07</created>
        <revision>1.3</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache Compress Ant Library 1.2</name>
        <created>2012-04-20</created>
        <revision>1.2</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache Compress Ant Library 1.1</name>
        <created>2011-11-05</created>
        <revision>1.1</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache Compress Ant Library 1.0</name>
        <created>2010-08-30</created>
        <revision>1.0</revision>
      </Version>
    </release>
    <repository>
      <GitRepository>
        <location rdf:resource="https://git-wip-us.apache.org/repos/asf/ant-antlibs-compress.git"/>
        <browse rdf:resource="https://git-wip-us.apache.org/repos/asf?p=ant-antlibs-compress.git"/>
      </GitRepository>
    </repository>
  </Project>
</rdf:RDF>
