<?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>../parent-project.xml</extend>
  <pomVersion>3</pomVersion>
  <groupId>commons-jelly</groupId>
  
  <organization>
    <name>The Apache Software Foundation</name>
    <url>http://jakarta.apache.org</url>
    <logo>http://jakarta.apache.org/images/original-jakarta-logo.gif</logo>
  </organization>
  <inceptionYear>2002</inceptionYear>
  <package>org.apache.commons.jelly.tags.ant</package>
  <logo>/images/logo.gif</logo>
  <!-- Gump integration -->
  <gumpRepositoryId>jakarta</gumpRepositoryId>

  <description>
      This is a Jelly tag.
  </description>
  <shortDescription>Commons Jelly Tag Library</shortDescription>
  
  <url>http://commons.apache.org/jelly/libs/${pom.artifactId.substring(19)}/</url>
  <issueTrackingUrl>http://issues.apache.org/jira/browse/JELLY</issueTrackingUrl>
  
  <siteAddress>people.apache.org</siteAddress>
  <siteDirectory>/www/commons.apache.org/jelly/libs/${pom.artifactId.substring(19)}/</siteDirectory>
  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/jelly/jelly-tags/${pom.artifactId.substring(19)}/</distributionDirectory>
  
  <repository>
    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/jelly/trunk/jelly-tags/${pom.artifactId.substring(19)}</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/jelly/trunk/jelly-tags/${pom.artifactId.substring(19)}</developerConnection>
    <url>http://svn.apache.org/viewvc/commons/proper/jelly/trunk/jelly-tags/${pom.artifactId.substring(19)}</url>
  </repository>
  
  
  <mailingLists>
    <mailingList>
      <name>Commons Dev List</name>
      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>
      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-dev/</archive>
    </mailingList>
    <mailingList>
      <name>Commons User List</name>
      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>
      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/</archive>
    </mailingList>
  </mailingLists>
  
  <developers>
    <developer>
      <name>James Strachan</name>
      <id>jstrachan</id>
      <email>jstrachan@apache.org</email>
      <organization>SpiritSoft, Inc.</organization>
    </developer>
    <developer>
      <name>Geir Magnusson Jr.</name>
      <id>geirm</id>
      <email>geirm@adeptra.com</email>
      <organization>Adeptra, Inc.</organization>
    </developer>
    <developer>
      <name>Bob McWhirter</name>
      <id>werken</id>
      <email>bob@eng.werken.com</email>
      <organization>The Werken Company</organization>
    </developer>
    <developer>
      <name>dIon Gillard</name>
      <id>dion</id>
      <email>dion@multitask.com.au</email>
      <organization>Multitask Consulting</organization>
      <roles>
        <role>Interested party</role>
      </roles>
    </developer>
    <developer>
      <name>Morgan Delagrange</name>
      <id>morgand</id>
      <email>morgand@apache.org</email>
    </developer>
    <developer>
      <name>Rodney Waldhoff</name>
      <id>rwaldhoff</id>
      <email>rwaldhoff@apache.org</email>
    </developer>
    <developer>
      <name>Robert Burrell Donkin</name>
      <id>rdonkin</id>
      <email>rdonkin@apache.org</email>
    </developer>
    <developer>
      <name>Felipe Leme</name>
      <id>felipeal</id>
      <email>jelly@felipeal.net</email>
      <organization>Falcon Informatica</organization>
      <timezone>-3</timezone>
      <roles>
        <role>itch-scratcher Jakarta PMC</role>
      </roles>
    </developer>
    <developer>
      <name>Paul Libbrecht</name>
      <email>paul@activemath.org</email>
      <roles>
          <role>Developer</role>
      </roles>
    </developer>    
  </developers>

  <contributors>
    <contributor>
      <name>Martin van dem Bemt</name>
      <email>mvdb@mvdb.com</email>
    </contributor>
    <contributor>
      <name>Erik Fransen</name>
      <email>erik167@xs4all.nl</email>
      <roles>
          <role>Logo designer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Calvin Yu</name>
    </contributor>
    <contributor>
      <name>Stephen Haberman</name>
      <email>stephenh@chase3000.com</email>
    </contributor>
    <contributor>
      <name>Vinay Chandran</name>
      <email>sahilvinay@yahoo.com</email>
      <roles>
          <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Theo Niemeijer</name>
    </contributor>
    <contributor>
      <name>Joe Walnes</name>
      <email>joew@thoughtworks.com</email>
      <organization>ThoughtWorks, Inc.</organization>
      <roles>
          <role>Inventor of Mock Tags</role>
      </roles>
    </contributor>
    <contributor>
      <name>Otto von Wachter</name>
      <email>vonwao@yahoo.com</email>
      <organization></organization>
      <roles>
          <role>Author of the tutorials</role>
          <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Robert Leftwich</name>
      <email>robert@leftwich.info</email>
      <roles>
          <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Jim Birchfield</name>
      <email>jim.birchfield@genscape.com</email>
      <organization>Genscape, Inc.</organization>
      <roles>
          <role>Developer</role>
      </roles>
    </contributor>    
    <contributor>
      <name>Jason Horman</name>
      <email>jhorman@musicmatch.com</email>
      <roles>
          <role>Developer</role>
      </roles>
    </contributor>    
    <contributor>
      <name>Tim Anderson</name>
      <email>tima@intalio.com</email>
      <organization>Intalio, Inc.</organization>
      <roles>
          <role>Developer</role>
      </roles>
    </contributor>    
    <contributor>
      <name>Theo Niemeijer</name>
      <email>theo.niemeijer@getthere.nl</email>
      <organization></organization>
      <roles>
          <role>Developer</role>
      </roles>
    </contributor>    
    <contributor>
      <name>J. Matthew Pryor</name>
      <email>matthew_pryor@versata.com</email>
      <organization></organization>
      <roles>
          <role>Developer</role>
      </roles>
    </contributor>        
    <contributor>
      <name>Knut Wannheden</name>
      <email></email>
      <organization></organization>
      <roles>
          <role>Developer</role>
      </roles>
    </contributor>        
    <contributor>
      <name>Kelvin Tan</name>
      <email></email>
      <organization></organization>
      <roles>
          <role>Developer</role>
      </roles>
    </contributor>        
    <contributor>
      <name>Todd Jonker</name>
      <email></email>
      <organization></organization>
      <roles>
          <role>Developer</role>
      </roles>
    </contributor>            
  </contributors>
    
  <dependencies>
 
    
    <dependency>
      <groupId>xml-apis</groupId>
      <artifactId>xml-apis</artifactId>
      <version>1.0.b2</version>
    </dependency>
    
    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.6</version>
    </dependency>
    
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>2.1</version>
    </dependency>
    
    <dependency>
      <groupId>commons-jexl</groupId>
      <artifactId>commons-jexl</artifactId>
      <version>1.1</version>
    </dependency>
    
    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly</artifactId>
      <version>1.1-SNAPSHOT</version>
    </dependency>
    
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.0.3</version>
    </dependency>
    
    <dependency>
      <groupId>dom4j</groupId>
      <artifactId>dom4j</artifactId>
      <version>1.6.1</version>
    </dependency>

    <dependency>
      <groupId>jaxen</groupId>
      <artifactId>jaxen</artifactId>
      <version>1.1-beta-8</version>
    </dependency>

    <dependency>
      <groupId>xerces</groupId>
      <artifactId>xerces</artifactId>
      <version>2.2.1</version>
      <properties>
        <gump.project>xml-xerces</gump.project>
      </properties>
    </dependency>
  </dependencies>
  
  <build>
    <nagEmailAddress>dev@commons.apache.org</nagEmailAddress>
    <sourceDirectory>src/java</sourceDirectory>
    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>

    <!-- Unit test classes -->
    <unitTest>
      <includes>
        <include>**/Test*.java</include>
      </includes>
      <resources>
          <resource>
              <directory>src/test</directory>
              <includes>
                  <include>**/*.jelly</include>
                  <include>**/*.xml</include>
                  <include>**/*.xsl</include>
                  <include>**/*.rng</include>
                  <include>**/*.dtd</include>
                  <include>**/*.properties</include>
                  <include>**/*.html</include>
              </includes>
          </resource>
      </resources>
    </unitTest>

    <!-- Resources that are packaged up inside the JAR file -->
    <resources>        
        <resource>        
            <directory>src/java</directory>
            <includes>
                <include>**/*.properties</include>
            </includes>
        </resource>
      <resource>
        <directory>${basedir}/..</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>NOTICE.txt</include>
        </includes>
      </resource>
    </resources>
  
  </build>

  <reports>
    <!-- <report>maven-changelog-plugin</report>-->
    <report>maven-changes-plugin</report>
    <report>maven-checkstyle-plugin</report>
    <!-- <report>maven-developer-activity-plugin</report> -->
    <!-- <report>maven-file-activity-plugin</report> -->
    <report>maven-javadoc-plugin</report>
    <!-- <report>maven-jcoverage-plugin</report> -->
    <!-- <report>maven-jdepend-plugin</report> -->
    <report>maven-junit-report-plugin</report>
    <report>maven-jxr-plugin</report>
    <report>maven-jellydoc-plugin</report>
    <report>maven-license-plugin</report>
    <report>maven-pmd-plugin</report>
    <report>maven-tasklist-plugin</report>
  </reports>

</project>
