﻿<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright 2003-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>
  <extend>../commons-build/project.xml</extend>
  <name>Validator</name>
  <id>commons-validator</id>
  <currentVersion>1.1.4</currentVersion>
  <inceptionYear>2002</inceptionYear>
  <package>org.apache.commons.validator</package>

  <shortDescription>Commons Validator</shortDescription>
  <description>
    Commons Validator provides the building blocks for both client side validation
    and server side data validation. It may be used standalone or with a framework like
    Struts.
  </description>
  
  <developers>
    <developer>
      <name>Martin Cooper</name>
      <id>martinc</id>
      <email>martinc@apache.org</email>
      <organization></organization>
    </developer>
    <developer>
      <name>David Graham</name>
      <id>dgraham</id>
      <email>dgraham@apache.org</email>
      <organization></organization>
    </developer>
    <developer>
      <name>Rob Leland</name>
      <id>rleland</id>
      <email>rleland at apache.org</email>
      <organization></organization>
    </developer>
    <developer>
      <name>Craig McClanahan</name>
      <id>craigmcc</id>
      <email>craigmcc@apache.org</email>
      <organization></organization>
    </developer>
    <developer>
      <name>James Turner</name>
      <id>turner</id>
      <email>turner@apache.org</email>
      <organization></organization>
    </developer>
    <developer>
      <name>David Winterfeldt</name>
      <id>dwinterfeldt</id>
      <email>dwinterfeldt@apache.org</email>
      <organization></organization>
    </developer>
      <developer>
        <name>Ted Husted</name>
        <id>husted</id>
        <email>husted@apache.org</email>
        <organization></organization>
      </developer>
  </developers>
  
  <contributors>
    <contributor>
      <name>Saul Q Yuan Add</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
    <contributor>
      <name>Shane Bailey</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
    <contributor>
      <name>Dave Derry</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
   <contributor>
      <name>Tim O'Brien</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
   <contributor>
      <name>Scott Clasen</name>
      <id></id>
      <email>ticktock@speakeasy.net></email>
      <organization></organization>
    </contributor>
    <contributor>
      <name>Marcus Brito Finish</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
  <contributor>
      <name>Padma Ginnaram</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
   <contributor>
      <name>Thomas Jacob</name>
      <id></id>
      <email>thomas.jacob@sinnerschrader.com</email>
      <organization></organization>
    </contributor>
    <contributor>
      <name>Adam Kramer</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
    <contributor>
      <name>Greg Ludington</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
   <contributor>
      <name>Björn-H. Moritz</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
     <contributor>
      <name>David Neuer</name>
      <id></id>
      <email>DavidNeuer@nascopgh.com</email>
      <organization></organization>
    </contributor>
   <contributor>
      <name>Kurt Post</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
   <contributor>
      <name>Arun Mammen Thomas</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
   <contributor>
      <name>Steven Fines</name>
      <id></id>
      <email>steven.fines@cotelligent.com</email>
      <organization></organization>
    </contributor>
   <contributor>
      <name>Didier Romelot</name>
      <id></id>
      <email>didier.romelot@renault.com</email>
      <organization></organization>
    </contributor>
    <contributor>
      <name>Steve Stair</name>
      <id></id>
      <email></email>
      <organization></organization>
    </contributor>
   <contributor>
      <name>Jeremy Tan</name>
      <id></id>
      <email>jeremytan@scualum.com</email>
      <organization></organization>
    </contributor>
    <contributor>
      <name>94RGt2</name>
      <id></id>
      <email>lmagee@biziworks.com.au</email>
      <organization></organization>
    </contributor>

  </contributors>
  
  <dependencies>
    
    <dependency>
      <id>commons-beanutils</id>
      <version>1.6.1</version>
      <url>http://jakarta.apache.org/commons/beanutils.html</url>
    </dependency>

    <dependency>
      <id>commons-collections</id>
      <version>2.1</version>
      <url>http://jakarta.apache.org/commons/collections.html</url>
    </dependency>

    <dependency>
      <id>commons-digester</id>
      <version>1.5</version>
      <url>http://jakarta.apache.org/commons/digester.html</url>
    </dependency>

    <dependency>
      <id>commons-logging</id>
      <version>1.0.3</version>
      <url>http://jakarta.apache.org/commons/logging.html</url>
    </dependency>


    <dependency>
      <id>oro</id>
      <version>2.0.8</version>
      <url>http://jakarta.apache.org/oro/</url>
    </dependency>

    <dependency>
      <id>xml-apis</id>
      <version>2.0.2</version>
      <url>http://xml.apache.org/commons/</url>
    </dependency>

	<!-- for unit tests -->
    <dependency>
      <id>junit</id>
      <version>3.8.1</version>
      <url>http://www.junit.org</url>
    </dependency>

  </dependencies>

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

    <unitTest>
      <includes>
        <include>**/ValidatorTestSuite.java</include>
      </includes>
      <resources>
        <resource>
          <directory>${pom.build.unitTestSourceDirectory}</directory>
          <includes>
            <include>**/*.xml</include>
          </includes>
        </resource>
      </resources>
    </unitTest>

  </build>

  <reports>
    <!--
     |
     | These should all be completely self contained. You should be able
     | to generate each of them individually without needing the final
     | xdoc transformation.
     |
     | Each report plugin with it's POM and plugin.jelly logic should
     | contain everything needed to produced the report.
     |
    -->

    <report>maven-jdepend-plugin</report>
    <report>maven-checkstyle-plugin</report>
    <report>maven-changes-plugin</report>
    <report>maven-changelog-plugin</report>
    <report>maven-file-activity-plugin</report>
    <report>maven-developer-activity-plugin</report>
    <report>maven-javadoc-plugin</report>
    <report>maven-jxr-plugin</report>
    <report>maven-junit-report-plugin</report>
    <!-- <report>maven-tasklist-plugin</report> -->
    <report>maven-pmd-plugin</report>
    <report>maven-simian-plugin</report>
    <report>maven-faq-plugin</report>
    <!-- <report>maven-clover-plugin</report> -->
  </reports>

</project>
