<?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>
  <extend>${basedir}/../tag-project.xml</extend>
  <id>commons-jelly-tags-jsl</id>
  <name>commons-jelly-tags-jsl</name>
  <currentVersion>1.1-SNAPSHOT</currentVersion>

  <package>org.apache.commons.jelly.tags.jsl</package>

  <description>
       The Jelly Stylesheet Library (JSL) 
  </description>
  <shortDescription>Commons Jelly JSL Tag Library</shortDescription>
  
  <versions>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>COMMONS_JELLY_JSL-1_0</tag>
    </version>
  </versions>

  <dependencies>

    <!-- START for compilation -->
    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-xml</artifactId>
      <version>1.0</version>
      <properties>
        <classloader>root.maven</classloader>
      </properties>
      <url>http://jakarta.apache.org/commons/jelly/tags/xml/</url>
    </dependency>
    
      
    <!-- END for compilation -->
    
    <!-- below for testing, pulled in by ant taglib -->

    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-ant</artifactId>
      <version>1.0</version>
      <properties>
        <classloader>root.maven</classloader>
      </properties>
      <url>http://jakarta.apache.org/commons/jelly/tags/ant/</url>
    </dependency>

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

    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-log</artifactId>
      <version>1.0</version>
      <properties>
        <classloader>root.maven</classloader>
      </properties>
      <url>http://jakarta.apache.org/commons/jelly/tags/log/</url>
    </dependency>

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

    
    <!-- START for running demos -->

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