<?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
   
         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.
-->
<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#"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">
  <Project rdf:about="http://ant.apache.org/ivy/">
    <created>2010-11-16</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache Ivy</name>
    <homepage rdf:resource="http://ant.apache.org/ivy/" />
    <asfext:pmc rdf:resource="http://ant.apache.org" />
    <shortdesc>Apache Ivy is a very powerful dependency manager oriented toward Java dependency management, even though it could be used to manage dependencies of any kind.</shortdesc>
    <description>Apache Ivy is a very powerful dependency manager oriented toward Java dependency management, even though it could be used to manage dependencies of any kind.</description>
    <bug-database rdf:resource="https://issues.apache.org/jira/browse/IVY" />
    <mailing-list rdf:resource="http://ant.apache.org/ivy/mailing-lists.html" />
    <download-page rdf:resource="http://ant.apache.org/ivy/download.cgi" />
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/build-management" />
    <release>
      <Version>
        <name>Apache Ivy 2.5.1</name>
        <created>2022-11-04</created>
        <revision>2.5.1</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache Ivy 2.5.0</name>
        <created>2019-10-20</created>
        <revision>2.5.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache Ivy 2.4.0</name>
        <created>2014-12-26</created>
        <revision>2.4.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache Ivy 2.3.0</name>
        <created>2013-01-24</created>
        <revision>2.3.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache Ivy 2.2.0</name>
        <created>2010-10-07</created>
        <revision>2.2.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache Ivy 2.1.0</name>
        <created>2009-10-13</created>
        <revision>2.1.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache Ivy 2.0.0</name>
        <created>2009-01-22</created>
        <revision>2.0.0</revision>
      </Version>
    </release>
    <repository>
      <GitRepository>
        <location rdf:resource="https://gitbox.apache.org/repos/asf/ant-ivy.git"/>
        <browse rdf:resource="https://gitbox.apache.org/repos/asf?p=ant-ivy.git"/>
      </GitRepository>
    </repository>
  </Project>
</rdf:RDF>
