<?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-dynabean</id>
  <name>commons-jelly-tags-dynabean</name>
  <currentVersion>1.0</currentVersion>

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

  <description>
       The Jelly DynaBean Tag Library
  </description>
  <shortDescription>Commons Jelly Dyna Bean Tag Library</shortDescription>
  
  <versions>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>COMMONS_JELLY_DYNABEAN-1_0</tag>
    </version>
  </versions>

  <dependencies>

    <!-- START for test -->

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

    <!-- END for test -->

  </dependencies>
  
</project>
