<?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.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>
