<?xml version="1.0"?>
<!--
   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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <parent>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-parent</artifactId>
      <version>37</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-email</artifactId>
    <version>1.4.0-SNAPSHOT</version>
    <name>Apache Commons Email</name>

    <inceptionYear>2001</inceptionYear>
    <description>
        Apache Commons Email aims to provide an API for sending email. It is built on top of
        the JavaMail API, which it aims to simplify.
    </description>

    <url>http://commons.apache.org/proper/commons-email/</url>

    <issueManagement>
        <system>jira</system>
        <url>http://issues.apache.org/jira/browse/EMAIL</url>
    </issueManagement>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/email/trunk</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/email/trunk</developerConnection>
        <url>http://svn.apache.org/viewvc/commons/proper/email/trunk</url>
    </scm> 

    <developers>
        <developer>
            <name>dIon Gillard</name>
            <id>dion</id>
            <email>dion@apache.org</email>
            <organization>The Apache Software Foundation</organization>
            <roles>
              <role>Java Developer</role>
            </roles>
        </developer>
        <developer>
            <name>John McNally</name>
            <id>jmcnally</id>
            <email>jmcnally@collab.net</email>
            <organization>CollabNet, Inc.</organization>
            <roles />
        </developer>
        <developer>
            <name>Quinton McCombs</name>
            <id>quintonm</id>
            <email>quintonm@bellsouth.net</email>
            <organization>NequalsOne, LLC.</organization>
            <roles />
        </developer>
        <developer>
            <name>Eric Pugh</name>
            <id>epugh</id>
            <email>epugh@opensourceconnections.com</email>
            <organization>OpenSource Connections</organization>
            <roles />
        </developer>
        <developer>
            <name>Daniel Rall</name>
            <id>dlr</id>
            <email>dlr@finemaltcoding.com</email>
            <organization>CollabNet, Inc.</organization>
            <roles />
        </developer>
        <developer>
            <name>Jon Scott Stevens</name>
            <id>jon</id>
            <email>jon@latchkey.com</email>
            <organization>CollabNet, Inc.</organization>
            <roles />
        </developer>
        <developer>
            <name>Jason van Zyl</name>
            <id>jvanzyl</id>
            <email>jason@zenplex.com</email>
            <organization>Zenplex</organization>
            <roles />
        </developer>
        <developer>
            <name>Joe Germuska</name>
            <id>germuska</id>
            <email>Joe@Germuska.com</email>
            <roles />
        </developer>
        <developer>
            <name>Robert Burrell Donkin</name>
            <id>rdonkin</id>
            <email>rdonkin@apache.org</email>
            <roles />
        </developer>
        <developer>
            <name>Henning P. Schmiedehausen</name>
            <id>henning</id>
            <email>hps@intermeta.de</email>
            <organization>INTERMETA - Gesellschaft fuer Mehrwertdienste mbH</organization>
            <roles>
              <role>Java Developer</role>
            </roles>
            <timezone>2</timezone>
        </developer>
        <developer>
            <name>Stephen Colebourne</name>
            <id>scolebourne</id>
            <roles />
            <timezone>0</timezone>
        </developer>
        <developer>
            <name>Ben Speakmon</name>
            <id>bspeakmon</id>
            <email>bspeakmon@apache.org</email>
            <organization>The Apache Software Foundation</organization>
            <roles>
                <role>Java Developer</role>
            </roles>
            <timezone>-8</timezone>
        </developer>
        <developer>
            <name>Siegfried Goeschl</name>
            <id>sgoeschl</id>
            <email>sgoeschl@apache.org</email>            
            <roles>
              <role>Java Developer</role>
            </roles>
            <timezone>2</timezone>
        </developer>
        <developer>
            <name>Thomas Neidhart</name>
            <id>tn</id>
            <email>tn@apache.org</email>
            <organization>The Apache Software Foundation</organization>
            <roles />
        </developer>        
        <developer>
            <name>Gary Gregory</name>
            <id>ggregory</id>
            <email>ggregory@apache.org</email>
            <url>http://www.garygregory.com</url>
            <timezone>-5</timezone>
        </developer>
    </developers>
    <contributors>    
        <contributor>
            <name>Bindul Bhowmik</name>
        </contributor>
        <contributor>
            <name>Colin Chalmers</name>
            <email>colin.chalmers@maxware.nl</email>
        </contributor> 
        <contributor>
            <name>Frank Y. Kim</name>
            <email>frank.kim@clearink.com</email>
        </contributor>
        <contributor>
            <name>Regis Koenig</name>
        </contributor>
        <contributor>
            <name>Stephen Kruger</name>
        </contributor>
        <contributor>
            <name>Sean Legassick</name>
            <email>sean@informage.net</email>
        </contributor>
        <contributor>
            <name>Andrew Liles</name>
        </contributor>
        <contributor>
            <name>Cedrik Lime</name>
        </contributor>
        <contributor>
            <name>Mark Lowe</name>
            <email>mark.lowe@boxstuff.com</email>
        </contributor>
        <contributor>
            <name>Brett McLaughlin</name>
            <email>bmclaugh@algx.net</email>
        </contributor>
        <contributor>
            <name>Piero Ottuzzi</name>
        </contributor>
        <contributor>
            <name>Niall Pemberton</name>
        </contributor>
        <contributor>
            <name>Greg Ritter</name>
            <email>greg@shwoop.com</email>
        </contributor>
        <contributor>
            <name>Corey Scott</name>
            <email>corey.scott@gmail.com</email>
        </contributor>
        <contributor>
            <name>Eric Spiegelberg</name>
            <email>eric@spiegs.com</email>
        </contributor>
        <contributor>
            <name>Dominik Stadler</name>
        </contributor>
        <contributor>
            <name>Matthias Wessendorf</name>
            <email>matthias@wessendorf.net</email>
        </contributor>
        <contributor>
            <name>Brandon Wolfe</name>
        </contributor>
    </contributors>

    <dependencies>
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.5.2</version>
        </dependency>
        <!-- JAF is built-in to Java 6 -->
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>1.7.7</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <!-- IO 2.2 is the last version compatible with 1.5; IO 2.4 needs Java 1.6 -->
            <version>2.2</version>
            <scope>test</scope>
        </dependency>
    	<dependency>
    		<groupId>org.subethamail</groupId>
    		<artifactId>subethasmtp</artifactId>
    		<version>3.1.7</version>
    		<scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>javax.mail</groupId>
                    <artifactId>mail</artifactId>
                </exclusion>
            </exclusions>
    	</dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-easymock</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>${easymock.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>1.5</maven.compiler.source>
        <maven.compiler.target>1.5</maven.compiler.target>
        <commons.componentid>email</commons.componentid>
        <commons.jira.id>EMAIL</commons.jira.id>
        <commons.jira.pid>12310474</commons.jira.pid>
        <commons.release.version>1.3.3</commons.release.version>
        <commons.rc.version>RC2</commons.rc.version>
        <commons.binary.suffix>-bin</commons.binary.suffix>

        <!-- override the default commons encoding property -->
        <commons.encoding>UTF-8</commons.encoding>
        
        <powermock.version>1.4.12</powermock.version>
        <easymock.version>3.2</easymock.version>
        <findbugs.version>2.5.5</findbugs.version>
    </properties> 

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <!-- exclude test case support classes -->
                    <excludes>
                        <exclude>org/apache/commons/mail/mocks/*</exclude>
                        <exclude>org/apache/commons/mail/settings/*</exclude>
                        <exclude>**/Abstract*Test.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <descriptor>src/assembly/bin.xml</descriptor>
                        <descriptor>src/assembly/src.xml</descriptor>
                    </descriptors>
                    <tarLongFileMode>gnu</tarLongFileMode>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>            
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <mavenExecutorId>forked-path</mavenExecutorId>
                </configuration>
            </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-publish-plugin</artifactId>
            <configuration>
              <ignorePathsToDelete>
                <ignorePathToDelete>javadocs</ignorePathToDelete>
              </ignorePathsToDelete>
            </configuration>
          </plugin>
        </plugins>
    </build>

    <distributionManagement>
      <site>
        <id>apache.website</id>
        <name>Apache Website</name>
        <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/email/</url>
      </site>    
    </distributionManagement>
    
    <reporting>
        <plugins>
            <!-- generate the changes report from changes.xml -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-changes-plugin</artifactId>
                <configuration>
                    <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>
                </configuration>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>changes-report</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin> 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.13</version>
                <configuration>
                    <configLocation>${basedir}/conf/checkstyle.xml</configLocation>
                    <enableRulesSummary>false</enableRulesSummary>
                    <headerFile>${basedir}/conf/HEADER.txt</headerFile>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>2.7.1</version>
                <configuration>
                    <targetJdk>${maven.compiler.target}</targetJdk>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>${findbugs.version}</version>
                <configuration>
                    <threshold>Normal</threshold>
                    <effort>Default</effort>
                    <excludeFilterFile>${basedir}/conf/findbugs-exclude-filter.xml</excludeFilterFile>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>clirr-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>src/test/resources/eml/*.eml</exclude>
                    </excludes>
                </configuration>
            </plugin>            
        </plugins>
    </reporting>

    <profiles>
        <profile>
            <id>rc</id>
            <distributionManagement>
                <!-- Cannot define in parent ATM, see COMMONSSITE-26 -->
                <site>
                    <id>apache.website</id>
                    <name>Apache Commons Release Candidate Staging Site</name>
                    <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/builds/commons/${commons.componentid}/${commons.release.version}/${commons.rc.version}/site</url>
                </site>
            </distributionManagement>
        </profile>
        
  		<profile>
  			<!-- Use a profile to detect if we are running in a Java 1.8 environment.
  			     Use different versions of easymock/powermock, otherwise the test execution will fail -->
  		    <id>test_java_8</id>
    		<activation>
      			<jdk>1.8</jdk>
    		</activation>
    		<properties>
        		<powermock.version>1.5.6</powermock.version>
                <findbugs.version>3.0.0</findbugs.version>
    		</properties>
		</profile>        
    </profiles>
</project>
