<?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-swing</id>
  <name>JellySwing</name>
  <currentVersion>1.1-SNAPSHOT</currentVersion>

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

  <description>
      This is a Jelly interface for configuring Swing applications.
  </description>
  <shortDescription>Commons Jelly Swing Tag Library</shortDescription>
  
  <versions>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>COMMONS-JELLY-SWING-1_0</tag>
    </version>
  </versions>

  <dependencies>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.0</version>
    </dependency>

    <!-- START for test -->
    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-define</artifactId>
      <version>1.0</version>
      <url>http://jakarta.apache.org/commons/jelly/tags/define/</url>
      <properties>
        <classloader>root.maven</classloader>
      </properties>
    </dependency>

    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-interaction</artifactId>
      <version>1.0</version>
      <url>http://jakarta.apache.org/commons/jelly/tags/interaction/</url>
      <properties>
        <classloader>root.maven</classloader>
      </properties>
    </dependency>
      
    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-junit</artifactId>
      <version>1.0</version>
      <properties>
        <classloader>root.maven</classloader>
      </properties>
      <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>
      <url>http://jakarta.apache.org/commons/jelly/tags/log/</url>
      <properties>
        <classloader>root.maven</classloader>
      </properties>
    </dependency>

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