<?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>
  <extend>${basedir}/../tag-project.xml</extend>
  <artifactId>commons-jelly-tags-dynabean</artifactId>
  <name>commons-jelly-tags-dynabean</name>
  <currentVersion>1.0.1-SNAPSHOT</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://commons.apache.org/jelly/tags/junit/</url>
      <properties>
        <scope>test</scope>
      </properties>
    </dependency>

    <!-- END for test -->

  </dependencies>
  
</project>
