<?xml version="1.0" encoding="UTF-8"?>

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

<project>
  <!--
    BRITTLE! must include ${basedir} location or Maven will
    not run this script outside of the base directory
  -->

  <extend>${basedir}/../tag-project.xml</extend>
  <artifactId>commons-jelly-tags-ant</artifactId>
  <name>commons-jelly-tags-ant</name>
  <currentVersion>1.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>
    <version>
      <id>1.1</id>
      <name>1.1</name>
      <tag>commons-jelly-tags-ant-1.1</tag>
    </version>
  </versions>
  <dependencies>
    <!-- START for compilation -->

    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant</artifactId>
      <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.1-SNAPSHOT</version>
      <url>http://commons.apache.org/jelly/libs/junit/</url>
      <properties>
        <scope>test</scope>
      </properties>
    </dependency>
    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-util</artifactId>
      <version>1.1.2-SNAPSHOT</version>
      <properties>
        <scope>test</scope>
      </properties>
    </dependency>
    <!-- END for testing -->
    <!-- START for running demos -->

    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
      <version>1.0</version>
    </dependency>
    <!-- END for running demos -->

  </dependencies>
</project>
