<?xml version="1.0" encoding="UTF-8"?>
<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">
  <!--
    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.    
  -->
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.james</groupId>
  <artifactId>james-parent</artifactId>
  <name>Apache JAMES Parent POM</name>
  <version>1.1</version>
  <description>
    The Apache JAMES Parent POM
  </description>

  <prerequisites>
    <maven>2.0.6</maven>
  </prerequisites>
  
  <modules>
    <module>maven-skin</module>
    <module>project</module>
  </modules>

  <url>http://james.apache.org/</url>
  <inceptionYear>2006</inceptionYear>
  <packaging>pom</packaging>

  <dependencies>
  </dependencies>

  <organization>
    <name>The Apache Software Foundation</name>
    <url>http://www.apache.org</url>
  </organization>

  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <issueManagement>
    <system>JIRA</system>
    <url>http://issues.apache.org/jira/browse/JAMES</url>
  </issueManagement>

  <developers>
    <developer>
      <id>bago</id>
      <name>Stefano Bagnara</name>
      <email>bago at apache.org</email>
      <timezone>2</timezone>
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>norman</id>
      <name>Norman Maurer</name>
      <email>norman at apache.org</email>
      <timezone>2</timezone>
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>serge</id>
      <name>Serge Knystautas</name>
      <email>sergek at lokitech.com</email>
      <timezone />
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>benrdf</id>
      <name>Bernd Fondermann</name>
      <email>bf_jak at brainlounge.de</email>
      <timezone />
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>sbrewin</id>
      <name>Steve Brewin</name>
      <email>sbrewin at synsys.com</email>
      <timezone />
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>hilmer</id>
      <!-- This is not correctly handled by maven release plugin -->
      <!-- <name>S&#248;ren Hilmer</name> -->
      <name>Soren Hilmer</name>
      <email>sh at widetrail.dk</email>
      <timezone />
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>noel</id>
      <name>Noel J. Bergman</name>
      <email>noel at devtech.com</email>
      <timezone />
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>danny</id>
      <name>Danny Angus</name>
      <email>danny at apache.org</email>
      <timezone />
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>adc</id>
      <name>Alan D. Cabrera</name>
      <email>list at toolazydogs.com</email>
      <timezone>-8</timezone>
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>vincenzo</id>
      <name>Vincenzo Gianferrari Pini</name>
      <email>vincenzo.gianferraripini at praxis.it</email>
      <timezone />
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>rdonkin</id>
      <name>Robert Burrell Donkin</name>
      <email>rdonkin at apache.org</email>
      <timezone />
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
    <developer>
      <id>niklas</id>
      <name>Niklas Therning</name>
      <email>niklas(at)apache(dot)org</email>
      <organization>Trillian AB</organization>
    </developer>
    <developer>
      <id>jcheng</id>
      <name>Joe Cheng</name>
      <email>joe(at)joecheng(dot)com</email>
      <properties>
        <description>
          Former author to the mime4j product
        </description>
      </properties>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Rob Oxspring</name>
      <properties>
        <description>
          Contributed to the mime4j product
        </description>
      </properties>
    </contributor>
    <contributor>
      <name>Roger Fullerton</name>
      <properties>
        <description>
          Wrote spfjava, the first spf implementation in java
        </description>
      </properties>
    </contributor>
  </contributors>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/james/project/tags/james-parent-1.1</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/james/project/tags/james-parent-1.1</developerConnection>
    <url>http://svn.apache.org/viewvc/james/project/tags/james-parent-1.1</url>
  </scm>

  <distributionManagement>
    <repository>
      <id>apache.releases</id>
      <name>Apache Release Distribution Repository</name>
      <url>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>
    </repository>
    <snapshotRepository>
      <id>apache.snapshots</id>
      <name>Apache Development Snapshot Repository</name>
      <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>
    </snapshotRepository>
    <!-- Each project must override this with their own -->
    <site>
      <id>james-parent-website</id>
      <url>scp://minotaur.apache.org/www/james.apache.org/parent/</url>
    </site>
  </distributionManagement>

  <repositories>
    <repository>
      <id>central</id>
      <url>http://repo1.maven.org/maven2</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>apache.releases</id>
      <name>Apache Main M2 Repository</name>
      <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>http://people.apache.org/repo/m2-snapshot-repository</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>
  
  <profiles>
    <!-- parent profile: used to find skin dependency in stage -->
    <profile>
      <id>parent</id>
      <repositories>
        <repository>
          <id>local-james-parent-stage</id>
          <name>Apache JAMES parent stage repository folder</name>
          <url>file://${basedir}/stage</url>
          <layout>legacy</layout>
          <releases>
            <enabled>true</enabled>
            <checksumPolicy>ignore</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <checksumPolicy>ignore</checksumPolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile>
    <!-- local profile: used to ignore remote repositories in a local build -->
    <profile>
      <id>local</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>http://repo1.maven.org/maven2</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
        <repository>
          <id>apache.releases</id>
          <name>Apache Main M2 Repository</name>
          <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
        <repository>
          <id>apache.snapshots</id>
          <name>Apache Snapshot Repository</name>
          <url>http://people.apache.org/repo/m2-snapshot-repository</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
    <!-- START SNIPPET: release-profile -->
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <!-- We want to sign the artifact, the POM, and all attached artifacts -->
          <plugin>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.0-alpha-3</version>
            <configuration>
              <passphrase>${gpg.passphrase}</passphrase>
            </configuration>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <!-- We want to deploy the artifact to a staging location for perusal -->
          <plugin>
            <inherited>true</inherited>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.3</version>
            <configuration>
              <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>
              <updateReleaseInfo>true</updateReleaseInfo>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.0.2</version>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.2</version>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- END SNIPPET: release-profile -->
  </profiles>  

</project>