<?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>
  <extend>../sandbox-build/project.xml</extend>
  <name>Commons Email</name>
  <id>commons-email</id>
  <logo>/images/email-logo-white.png</logo>
  <inceptionYear>2001</inceptionYear>
  <shortDescription>Commons Email</shortDescription>
  <description>Commons Email provides a simple wrapper over the Java Mail API</description>
  <currentVersion>1.0-dev</currentVersion>
  
  <logo></logo>
  <package>org.apache.commons.mail</package>
  <gumpRepositoryId>jakarta-commons-sandbox</gumpRepositoryId>

  <developers>
    <developer>
      <name>dIon Gillard</name>
      <id>dion</id>
      <email>dion@multitask.com.au</email>
      <organization>Multitask Consulting</organization>
    </developer>
    <developer>
      <name>John McNally</name>
      <id>jmcnally</id>
      <email>jmcnally@collab.net</email>
      <organization>CollabNet, Inc.</organization>
    </developer>
    <developer>
      <name>Quinton McCombs</name>
      <id>quintonm</id>
      <email>quintonm@bellsouth.net</email>
      <organization>NequalsOne, LLC.</organization>
    </developer>
    <developer>
      <name>Eric Pugh</name>
      <id>epugh</id>
      <email>epugh@REMOVEMEopensourceconnections.com</email>
      <organization>OpenSource Connections</organization>
    </developer>    
    <developer>
      <name>Daniel Rall</name>
      <id>dlr</id>
      <email>dlr@finemaltcoding.com</email>
      <organization>CollabNet, Inc.</organization>
    </developer>
    <developer>
      <name>Jon Scott Stevens</name>
      <id>jon</id>
      <email>jon@latchkey.com</email>
      <organization>CollabNet, Inc.</organization>
    </developer>
    <developer>
      <name>Jason van Zyl</name>
      <id>jvanzyl</id>
      <email>jason@zenplex.com</email>
      <organization>Zenplex</organization>
    </developer>
    <developer>
      <name>Joe Germuska</name>
      <id>germuska</id>
      <email>Joe@Germuska.com</email>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Matthias Wessendorf</name>
      <email>matthias@wessendorf.net</email>
    </contributor>
    <contributor>
      <name>Corey Scott</name>
      <email>corey.scott@gmail.com</email>
    </contributor>
	<contributor>
      <name>Mark Lowe</name>
      <email>mark.lowe@boxstuff.com</email>
    </contributor>
	<contributor>
      <name>Regis Koenigt</name>
      <email></email>
    </contributor>
  </contributors>
  
  <dependencies>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>      
      <version>2.0</version>
      <url>http://jakarta.apache.org/commons/lang.html</url>
    </dependency>  
    <dependency>
      <groupId>javamail</groupId>
      <artifactId>javamail</artifactId>      
      <version>1.3.2</version>
      <url>http://java.sun.com/products/javamail/</url>
    </dependency>
    <dependency>
      <groupId>activation</groupId>
      <artifactId>activation</artifactId>      
      <version>1.0.2</version>
      <url>http://java.sun.com/products/javabeans/glasgow/jaf.html</url>
    </dependency>
    <!-- Needed for testing -->  
    <dependency>
      <groupId>dumbster</groupId>
      <artifactId>dumbster</artifactId>      
      <version>1.5</version>
    </dependency>    
  </dependencies>

  <build>
    <sourceDirectory>src/java</sourceDirectory>
    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
    <aspectSourceDirectories/>
    <unitTest>
      <includes>
        <include>**/*Test.java</include>
      </includes>
    </unitTest>
    <nagEmailAddress>commons-dev@jakarta.apache.org</nagEmailAddress>
  </build>
  
  <reports>
     <report>maven-changelog-plugin</report>
     <report>maven-changes-plugin</report>
     <report>maven-checkstyle-plugin</report>
     <!--report>maven-clover-plugin</report-->
     <report>maven-developer-activity-plugin</report>
     <report>maven-file-activity-plugin</report>
     <report>maven-javadoc-plugin</report>
     <!--report>maven-jellydoc-plugin</report-->
     <report>maven-junit-report-plugin</report>
     <report>maven-jxr-plugin</report>
     <report>maven-pmd-plugin</report>
     <report>maven-license-plugin</report>
     <report>maven-jcoverage-plugin</report>
     <!--report>maven-linkcheck-plugin</report-->
     <!--report>maven-statcvs-plugin</report-->
     <!--report>maven-tasklist-plugin</report-->
  </reports>
</project>
