<?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</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>
    <version>
      <id>1.1</id>
      <name>1.1</name>
      <tag>commons-jelly-tags-ant-1.1</tag>
    </version>
  </versions>
  <dependencies>
    <!-- START for compilation -->

    <dependency>
      <id>ant</id>
      <version>1.6.5</version>
    </dependency>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant-launcher</artifactId>
      <version>1.6.5</version>
    </dependency>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant-junit</artifactId>
      <version>1.6.5</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>
