<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.2</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>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>2.0-beta-5</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <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.2</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/james/project/tags/james-parent-1.2</developerConnection>
    <url>http://svn.apache.org/viewvc/james/project/tags/james-parent-1.2</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://people.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>