<?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.
-->
<project>
  <pomVersion>3</pomVersion>
  
  <id>commons-digester</id>
  <inceptionYear>2001</inceptionYear>
  <currentVersion>1.6-dev</currentVersion>
  <name>Digester</name>
  <shortDescription>Rule based XML->Java object mapping module</shortDescription>
  <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>
  <logo>/images/logo.png</logo>
  
  <url>http://jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>
  <package>org.apache.commons.${pom.artifactId.substring(8)}</package>

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

  <licenses>
	<license>
    	<name>The Apache Software License, Version 2.0</name>
    	<url>/LICENSE.txt</url>
    	<distribution>repo</distribution>
	</license>
  </licenses>
  
  <gumpRepositoryId>jakarta</gumpRepositoryId>
  <issueTrackingUrl>http://issues.apache.org/bugzilla/</issueTrackingUrl>
  <siteAddress>jakarta.apache.org</siteAddress>
  <siteDirectory>/www/jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</siteDirectory>
  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId.substring(8)}/</distributionDirectory>
  
  <repository>
    <!--<connection>scm:cvs:${digester.cvs}:jakarta-commons/digester/</connection>-->
    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/${pom.artifactId.substring(8)}</connection>
    <url>http://cvs.apache.org/viewcvs/jakarta-commons/${pom.artifactId.substring(8)}/</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://nagoya.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://nagoya.apache.org/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</archive>
    </mailingList>
  </mailingLists>

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

  <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>
    </contributor>
    <contributor>
      <name>Ted Husted</name>
    </contributor>
    <contributor>
      <name>David H. Martin</name>
    </contributor>
    <contributor>
      <name>Henri Chen</name>
    </contributor>
    <contributor>
      <name>Janek Bogucki</name>
    </contributor>
    <contributor>
      <name>Mark Huisman</name>
    </contributor>
    <contributor>
      <name>Paul Jack</name>
    </contributor>
    <contributor>
      <name>Anton Maslovsky</name>
    </contributor>
    <contributor>
      <name>Matt Cleveland</name>
    </contributor>
  </contributors>
  
  <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>
    <resources>
      <resource>
         <directory>${pom.build.sourceDirectory}</directory>
         <includes>
           <include>**/*.dtd</include>
         </includes>
      </resource>
    </resources>
    <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>
  </build>

  <reports>
   <report>maven-changelog-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-jdepend-plugin</report>
   <report>maven-junit-report-plugin</report>
   <report>maven-jxr-plugin</report>
   <report>maven-license-plugin</report>
   <report>maven-linkcheck-plugin</report>
   <report>maven-pmd-plugin</report>
   <report>maven-tasklist-plugin</report>
<!--   <report>maven-clover-plugin</report> -->
  </reports>
</project>
