<?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/props/">
    <created>2009-07-31</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache Props Ant Library</name>
    <homepage rdf:resource="http://ant.apache.org/antlibs/props/" />
    <asfext:pmc rdf:resource="http://ant.apache.org/" />
    <shortdesc>The Apache Props Antlib is a library of supplementary handlers for Apache Ant properties resolution.</shortdesc>
    <description>The Apache Props Antlib is a library of supplementary handlers for Apache Ant properties resolution.

The types provided are instances of org.apache.tools.ant.PropertyHelper.Delegate and can be invoked using the &lt;propertyhelper&gt; task provided in Ant 1.8.0.</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" />
    <repository>
      <SVNRepository>
        <location rdf:resource="http://svn.apache.org/repos/asf/ant/antlibs/props"/>
        <browse rdf:resource="http://svn.apache.org/viewvc/ant/antlibs/props"/>
      </SVNRepository>
    </repository>
  </Project>
</rdf:RDF>
