<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright 2001-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.
-->

<!--
  - Maven Project Object Model (POM) for commons-digester.
  -->

<project>
  <pomVersion>3</pomVersion>

  <!-- id is also known as artifactId -->
  <id>commons-digester</id>
  <name>Digester</name>

  <currentVersion>1.8-dev</currentVersion>

  <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>2001</inceptionYear>

  <package>org.apache.commons.digester</package>
  <logo>/images/logo.png</logo>
  <gumpRepositoryId>jakarta</gumpRepositoryId>

  <description>
    The Digester package lets you configure an XML->Java object mapping module
    which triggers certain actions called rules whenever a particular 
    pattern of nested XML elements is recognized.
  </description>
  <shortDescription>Rule based XML->Java object mapping module</shortDescription>

  <url>http://jakarta.apache.org/commons/digester/</url>
  <issueTrackingUrl>http://issues.apache.org/bugzilla/</issueTrackingUrl>
  <siteAddress>people.apache.org</siteAddress>
  <siteDirectory>/www/jakarta.apache.org/commons/digester/</siteDirectory>
  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/digester/</distributionDirectory>

  <repository>
    <connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/digester/trunk</connection>
    <url>http://svn.apache.org/repos/asf/jakarta/commons/proper/digester/trunk</url>
  </repository>

  <versions>
    <version>
      <id>1.7</id>
      <name>1.7</name>
      <tag>DIGESTER_1_7</tag>
    </version>
    <version>
      <id>1.6</id>
      <name>1.6</name>
      <tag>DIGESTER_1_6</tag>
    </version>
    <version>
      <id>1.5</id>
      <name>1.5</name>
      <tag>DIGESTER_1_5</tag>
    </version>
    <version>
      <id>1.4.1</id>
      <name>1.4.1</name>
      <tag>DIGESTER_1_4_1</tag>
    </version>
    <version>
      <id>1.4</id>
      <name>1.4</name>
      <tag>DIGESTER_1_4</tag>
    </version>
    <version>
      <id>1.3</id>
      <name>1.3</name>
      <tag>DIGESTER_1_3</tag>
    </version>
    <version>
      <id>1.2</id>
      <name>1.2</name>
      <tag>DIGESTER_1_2</tag>
    </version>
    <version>
      <id>1.1.1</id>
      <name>1.1.1</name>
      <tag>DIGESTER_1_1_1</tag>
    </version>
    <version>
      <id>1.1</id>
      <name>1.1</name>
      <tag>DIGESTER_1_1</tag>
    </version>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>DIGESTER_1_0</tag>
    </version>
  </versions>

  <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/eyebrowse/SummarizeList?listName=commons-dev@jakarta.apache.org</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/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</archive>
    </mailingList>
  </mailingLists>

  <developers>
    <developer>
      <name>Craig McClanahan</name>
      <id>craigmcc</id>
      <email>Craig.McClanahan@eng.sun.com</email>
      <organization>Sun Microsystems</organization>
    </developer>
    <developer>
      <name>Robert Burrell Donkin</name>
      <id>rdonkin</id>
      <email>rdonkin@apache.org</email>
    </developer>
    <developer>
      <name>Scott Sanders</name>
      <id>sanders</id>
      <email>sanders@totalsync.com</email>
    </developer>
    <developer>
      <name>James Strachan</name>
      <id>jstrachan</id>
      <email>jstrachan@apache.org</email>
    </developer>
    <developer>
      <name>Jason van Zyl</name>
      <id>jvanzyl</id>
      <email>jvanzyl@apache.org</email>
    </developer>
    <developer>
      <name>Tim OBrien</name>
      <id>tobrien</id>
      <email>tobrien@apache.org</email>
    </developer>
    <developer>
      <name>Jean-Francois Arcand</name>
      <id>jfarcand</id>
      <email>jfarcand@apache.org</email>
    </developer>
    <developer>
      <name>Simon Kitching</name>
      <id>skitching</id>
      <email>skitching@apache.org</email>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Bradley M. Handy</name>
      <email>bhandy@users.sf.net</email>
    </contributor>
    <contributor>
      <name>Christopher Lenz</name>
      <email/>
    </contributor>
    <contributor>
      <name>Ted Husted</name>
      <email/>
    </contributor>
    <contributor>
      <name>David H. Martin</name>
      <email/>
    </contributor>
    <contributor>
      <name>Henri Chen</name>
      <email/>
    </contributor>
    <contributor>
      <name>Janek Bogucki</name>
      <email/>
    </contributor>
    <contributor>
      <name>Mark Huisman</name>
      <email/>
    </contributor>
    <contributor>
      <name>Paul Jack</name>
      <email/>
    </contributor>
    <contributor>
      <name>Anton Maslovsky</name>
      <email/>
    </contributor>
    <contributor>
      <name>Matt Cleveland</name>
      <email/>
    </contributor>
    <contributor>
      <name>Gabriele Carcassi</name>
      <email/>
    </contributor>
    <contributor>
      <name>Wendy Smoak</name>
      <email>java@wendysmoak.com</email>
    </contributor>
    <contributor>
      <name>Kevin Ross</name>
      <email>kevin.ross@iverticalleap.com</email>
    </contributor>
     
  </contributors>

  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>/LICENSE.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <dependencies>
    <dependency> 
      <id>commons-beanutils</id>
      <version>1.6</version>
    </dependency>
    <dependency> 
      <id>commons-logging</id>
      <version>1.0</version>
    </dependency>
    <dependency> 
      <id>commons-collections</id> 
      <version>2.1</version> 
    </dependency> 
    <dependency>
      <id>xml-apis</id>
      <version>1.0.b2</version>
    </dependency>
    <dependency>
      <id>junit</id>
      <version>3.8.1</version>
    </dependency>
  </dependencies>

  <build>
    <nagEmailAddress>commons-dev@jakarta.apache.org</nagEmailAddress>
    <sourceDirectory>src/java</sourceDirectory>
    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>

    <unitTest>
      <includes>
        <include>**/*Test.java</include>
        <include>**/*TestCase.java</include>
      </includes>
      <resources>
         <resource>
            <directory>${pom.build.unitTestSourceDirectory}</directory>
            <includes>
              <include>**/*.xml</include>
            </includes>
         </resource>
        <resource>
           <directory>${pom.build.sourceDirectory}</directory>
           <includes>
             <include>**/*.dtd</include>
           </includes>
        </resource>
      </resources>
    </unitTest>

    <resources>
      <resource>
         <directory>${pom.build.sourceDirectory}</directory>
         <includes>
           <include>**/*.dtd</include>
         </includes>
      </resource>
    </resources>
  </build>

  <reports>
  <!-- 
    - changelog, developer-activity and file-activity plugins are all date-based, and
    - date selection is broken in subversion, so exclude them. They're not actually
    - much use anyway unless they go back to the date of the previous release.

   <report>maven-changelog-plugin</report>
   <report>maven-developer-activity-plugin</report>
   <report>maven-file-activity-plugin</report>
   -->

   <report>maven-checkstyle-plugin</report>
   <report>maven-javadoc-plugin</report>
   <report>maven-jdepend-plugin</report>
   <report>maven-junit-report-plugin</report>
   <report>maven-jxr-plugin</report>
   <report>maven-license-plugin</report>
   
   <!--
    - This report is useful to enable when preparing release candidates
    - but should not be included in the final release as the info isn't
    - relevant to end users. And it should not be enabled in normal use
    - as it takes a very long time to run.
   <report>maven-linkcheck-plugin</report>
   -->
   <report>maven-pmd-plugin</report>
   <report>maven-tasklist-plugin</report>
<!--   <report>maven-clover-plugin</report> -->
  </reports>
</project>
