<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2002,2004 The Apache Software Foundation.
  
  Licensed 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.
-->
<project>
  <!--
    BRITTLE! must include ${basedir} location or Maven will
    not run this script outside of the base directory
  -->
  <extend>${basedir}/../tag-project.xml</extend>
  <id>commons-jelly-tags-ant</id>
  <name>commons-jelly-tags-ant</name>
  <currentVersion>1.1-SNAPSHOT</currentVersion>
  <package>org.apache.commons.jelly.tags.ant</package>

  <description>
      This is a Jelly interface for Ant.
  </description>
  <shortDescription>Commons Jelly Ant Tag Library</shortDescription>
  
  <versions>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>COMMONS_JELLY_ANT-1_0</tag>
    </version>
  </versions>

  <!-- <siteDirectory>/www/jakarta.apache.org/commons/jelly/tags/ant</siteDirectory>
  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/jelly/tags/ant</distributionDirectory>
  <repository>
    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/jelly/jelly-tags/ant/</connection>
    <url>http://cvs.apache.org/viewcvs/jakarta-commons/jelly/jelly-tags/ant/</url>
  </repository>
  -->
    
  <dependencies>
  
    <!-- START for compilation -->
  
    <dependency>
      <id>ant</id>
      <version>1.5.3-1</version>
    </dependency>
    
    <dependency>
      <id>ant+optional</id>
      <version>1.5.3-1</version>
      <properties>
        <gump.project>ant</gump.project>
      </properties>
    </dependency>
    
    <dependency>
      <id>commons-grant</id>
      <version>1.0-beta-4</version>
    </dependency>
    
    <!-- END for compilation -->

    <!-- START for testing -->

    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-junit</artifactId>
      <version>1.0</version>
      <url>http://jakarta.apache.org/commons/jelly/libs/junit/</url>
    </dependency>

    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-util</artifactId>
      <version>1.1.1</version>
    </dependency>

    <!-- END for testing -->

    <!-- START for running demos -->

    <dependency>
      <id>commons-cli</id>
      <version>1.0</version>
    </dependency>
        
    <!-- END for running demos -->
  </dependencies>
  
</project>
