<?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>
  <name>commons-jelly</name>
  <artifactId>commons-jelly</artifactId>
  <currentVersion>1.1-SNAPSHOT</currentVersion>
  <organization>
    <name>The Apache Software Foundation</name>
    <url>http://commons.apache.org/</url>
    <logo>http://commons.apache.org/images/logo.png</logo>
  </organization>
  <logo>/images/logo.jpg</logo>
  <gumpRepositoryId>commons</gumpRepositoryId>
  <inceptionYear>2002</inceptionYear>
  <package>org.apache.commons.jelly</package>
  <packageGroups>
    <packageGroup>
      <title>Core Public API</title>
      <packages>org.apache.commons.jelly</packages>
    </packageGroup>
    <packageGroup>
      <title>Utility classes for using Jelly from Ant</title>
      <packages>org.apache.commons.jelly.task</packages>
    </packageGroup>
    <packageGroup>
      <title>Utility classes for using Jelly from Servlets</title>
      <packages>org.apache.commons.jelly.servlet</packages>
    </packageGroup>
    <packageGroup>
      <title>Classes used by Tag Implementors</title>
      <packages>org.apache.commons.jelly.impl,org.apache.commons.jelly.tags,org.apache.commons.jelly.expression</packages>
    </packageGroup>
    <packageGroup>
      <title>Tag Implementations</title>
      <packages>org.apache.commons.jelly.tags.*</packages>
    </packageGroup>
  </packageGroups>
  <shortDescription>Commons Jelly</shortDescription>
  <description>Jelly is a Java and XML based scripting engine. Jelly combines the best ideas from JSTL, Velocity, DVSL, Ant and Cocoon all together in a simple yet powerful scripting engine.</description>
  <url>http://commons.apache.org/jelly/</url>
  <issueTrackingUrl>http://issues.apache.org/jira/browse/JELLY</issueTrackingUrl>
  <siteAddress>people.apache.org</siteAddress>
  <siteDirectory>/www/commons.apache.org/${pom.artifactId.substring(8)}/</siteDirectory>
  <distributionSite>people.apache.org</distributionSite>
  <distributionDirectory>/www/people.apache.org/builds/commons/${pom.artifactId.substring(8)}/</distributionDirectory>
  <repository>
    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/jelly/trunk/</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/jelly/trunk/</developerConnection>
    <url>http://svn.apache.org/viewvc/commons/proper/jelly/trunk/</url>
  </repository>
  <mailingLists>
    <mailingList>
      <name>Commons Dev List</name>
      <subscribe>dev-subscribe@commons.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>
    </mailingList>
    <mailingList>
      <name>Commons User List</name>
      <subscribe>user-subscribe@commons.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>
    </mailingList>
  </mailingLists>
  <versions>
    <version>
      <id>1.0-beta-1</id>
      <name>1.0-beta-1</name>
      <tag>1.0-beta-1</tag>
    </version>
    <version>
      <id>1.0-beta-4</id>
      <name>1.0-beta-4</name>
      <tag>COMMONS-JELLY-1_0-beta-4</tag>
    </version>
    <version>
      <id>1.0-RC1</id>
      <name>1.0-RC1</name>
      <tag>COMMONS_JELLY-1_0_RC1</tag>
    </version>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>commons-jelly-1.0</tag>
    </version>
  </versions>
  <branches/>
  <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>Peter Royal</name>
      <id>proyal</id>
      <email>proyal@apache.org</email>
    </developer>
    <developer>
      <name>Martin van den Bemt</name>
      <id>mvdb</id>
      <email>martin@mvdb.net</email>
    </developer>
    <developer>
      <name>Paul Libbrecht</name>
      <id>polx</id>
      <email>paul@activemath.org</email>
    </developer>
    <developer>
      <name>Robert Burrell Donkin</name>
      <id>rdonkin</id>
      <email>rdonkin@apache.org</email>
    </developer>
    <developer>
      <name>Daniel F. Savarese</name>
      <id>dfs</id>
      <email>dfs -&gt; apache.org</email>
    </developer>
    <developer>
      <name>Brett Porter</name>
      <id>brett</id>
      <email>brett@apache.org</email>
    </developer>
    <developer>
      <name>Hans Gilde</name>
      <id>hgilde</id>
      <email>hgilde@apache.org</email>
    </developer>
  </developers>
  <contributors>
    <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/>
      <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/>
      <roles>
        <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>J. Matthew Pryor</name>
      <email>matthew_pryor@versata.com</email>
      <organization/>
      <roles>
        <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Knut Wannheden</name>
      <email/>
      <organization/>
      <roles>
        <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Kelvin Tan</name>
      <email/>
      <organization/>
      <roles>
        <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Todd Jonker</name>
      <email/>
      <organization/>
      <roles>
        <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Christiaan ten Klooster</name>
      <email/>
      <organization/>
      <roles>
        <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>Pete Kazmier</name>
      <email>kaz@apache.org</email>
      <organization/>
      <roles>
        <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>John Spackman</name>
      <email>john.spackman@zenesis.com</email>
      <organization>Zenesis Limited</organization>
      <roles>
        <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>John Spackman</name>
      <email>john.spackman@zenesis.com</email>
      <organization>Zenesis Limited</organization>
      <roles>
        <role>Developer</role>
      </roles>
    </contributor>
    <contributor>
      <name>John Spackman</name>
      <email>john.spackman@zenesis.com</email>
      <organization>Zenesis Limited</organization>
      <roles>
        <role>Developer</role>
      </roles>
    </contributor>
  </contributors>
  <dependencies>
    <!-- for servlet support -->

    <dependency>
      <groupId>servletapi</groupId>
      <artifactId>servletapi</artifactId>
      <version>2.3</version>
      <properties>
        <gump.project>jakarta-servletapi-5-servlet</gump.project>
      </properties>
    </dependency>
    <!-- for command line interface support -->

    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
      <version>1.0</version>
    </dependency>
    <!-- this is brought in by the commons-cli dependency -->

    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.0</version>
      <properties>
        <gump.project>commons-lang-2.x</gump.project>
        <gump.runtime>true</gump.runtime>
      </properties>
    </dependency>
    <dependency>
      <groupId>commons-discovery</groupId>
      <artifactId>commons-discovery</artifactId>
      <version>20030211.213356</version>
    </dependency>
    <!-- for the jelly startup scripts -->

    <dependency>
      <groupId>forehead</groupId>
      <artifactId>forehead</artifactId>
      <version>1.0-beta-5</version>
      <url>http://forehead.werken.com/</url>
    </dependency>
    <!-- for the jstl interfaces -->

    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.0.6</version>
      <url>http://jakarta.apache.org/taglibs/doc/standard-1.0-doc/intro.html</url>
      <properties>
        <gump.project>jakarta-taglibs-standard</gump.project>
        <gump.id>jstl</gump.id>
      </properties>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <url>http://junit.org</url>
    </dependency>
  </dependencies>
  <build>
    <nagEmailAddress>dev@commons.apache.org</nagEmailAddress>
    <sourceDirectory>${basedir}/src/java</sourceDirectory>
    <resources>
      <resource>
        <directory>${basedir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>NOTICE.txt</include>
        </includes>
      </resource>
      <resource>
        <directory>${basedir}/src/java</directory>
        <includes>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>
    <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>
    <!-- Unit test classes -->

    <unitTest>
      <includes>
        <include>**/Test*.java</include>
      </includes>
      <excludes>
        <exclude>**/TestCoreMemoryLeak.java</exclude>
		  <!--
		  -->
        <exclude>**/TestNestedExceptions.java</exclude>
        
        
      </excludes>
      <resources>
        <resource>
          <directory>src/test</directory>
          <includes>
            <include>META-INF/services/*</include>
            <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>
  </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-license-plugin</report>
    <report>maven-pmd-plugin</report>
    <report>maven-tasklist-plugin</report>
    <report>maven-multichanges-plugin</report>
    <report>maven-multiproject-plugin</report>
    <report>maven-jellydoc-plugin</report>
  </reports>
</project>
