<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2005-2006 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 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">
  
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.pluto</groupId>
  <artifactId>pluto</artifactId>
  <packaging>pom</packaging>
  <name>Apache Pluto</name>
  <!--
  Version numbers also need to be changed in
   * All project pom.xml files, 
   * dist-build.xml in this directory, 
   * The pluto-portal-driver-config.xml in the pluto-portal module (src/main/webapp/WEB-INF), 
   * expectedResults.properties in the portal-testsuite module (src/main/webapp/WEB-INF/classes), 
   * environment.properties in pluto-container module (src/main/resources/org/apache/pluto) and 
   * InstallationDependancy.java in the maven-pluto-plugin module (src/main/java/org/apache/pluto/maven).
  -->
  <version>1.1.0-SNAPSHOT</version>
  <!-- Due to a bug in maven 2.0, the description must not contain any line breaks or tabs. -->
  <description>Pluto is the Reference Implementation of the Java Portlet Specfication.</description>
  <url>http://portals.apache.org/pluto</url>

  <issueManagement>
    <system>jira</system>
    <url>http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10560</url>
  </issueManagement>
  <ciManagement>
    <system>continuum</system>
    <notifiers>
      <notifier>
        <type>mail</type>
        <address>pluto-dev@portals.apache.org</address>
      </notifier>
    </notifiers>
  </ciManagement>
  <inceptionYear>2003</inceptionYear>
  
  
  <!-- Mailing Lists ======================================================= -->
  
  <mailingLists>
    <mailingList>
      <name>Pluto User List</name>
      <subscribe>pluto-user-subscribe@portals.apache.org</subscribe>
      <unsubscribe>pluto-users-unsubscribe@portals.apache.org</unsubscribe>
      <post>pluto-users@portals.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/portals-pluto-user</archive>
    </mailingList>
    <mailingList>
      <name>Pluto Developer List</name>
      <subscribe>pluto-dev-subscribe@portals.apache.org</subscribe>
      <unsubscribe>pluto-dev-unsubscribe@portals.apache.org</unsubscribe>
      <post>pluto-dev@portals.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/portals-pluto-dev</archive>
    </mailingList>
    <mailingList>
      <name>Pluto SCM List</name>
      <subscribe>pluto-scm-subscribe@portals.apache.org</subscribe>
      <unsubscribe>pluto-scm-unsubscribe@portals.apache.org</unsubscribe>
      <post>pluto-scm@portals.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/portals-pluto-scm</archive>
    </mailingList>
  </mailingLists>
  
  
  <!-- Pluto Committers ==================================================== -->
  
  <!-- Email format: [name]#a@T#[domain].d0t.[extension]
       '@' and '.' characters are added because m2 seems to need them to
       generate mailto links. -->
  
  <developers>
    
    <developer>
      <name>Michael Blum</name>
      <id>blumm</id>
      <email>blumm#a@T#apache.d0t.org</email>
    </developer>

    <developer>
      <name>Carsten Ziegeler</name>
      <id>cziegeler</id>
      <email>cziegeler#a@T#apache.d0t.org</email>
    </developer>

    <developer>
      <name>David DeWolf</name>
      <id>ddewolf</id>
      <email>ddewolf@apache.org</email>
      <timezone>-4</timezone>
      <url>http://www.daviddewolf.com</url>
      <organization>Three Pillar Software, Inc.</organization>
      <organizationUrl>http://www.threepillarsoftware.com</organizationUrl>
      <roles><role>Java Developer</role></roles>
    </developer>

    <developer>
      <name>Nick Lothian</name>
      <id>nlothian</id>
      <email>nlothian#a@T#apache.d0t.org</email>
    </developer>

    <developer>
      <name>Craig Doremus</name>
      <id>cdoremus</id>
      <email>cdoremus#a@T#apache.d0t.org</email>
    </developer>
    
    <developer>
      <name>Zhong Zheng</name>
      <id>zheng</id>
      <email>zheng#a@T#apache.d0t.org</email>
      <timezone>+1</timezone>
      <organization/>
      <roles><role>Java Developer</role></roles>
    </developer>
    
    <developer>
      <name>Santiago Gala</name>
      <id>sgala</id>
      <email>sgala#a@T#hisitech.d0t.com</email>
      <organization/>
    </developer>
    
    <developer>
      <name>Raphael Luta</name>
      <id>raphael</id>
      <email>raphael#a@T#apache.d0t.org</email>
      <organization/>
    </developer>
    
    <developer>
      <name>David S. Taylor</name>
      <id>taylor</id>
      <email>david#a@T#bluesunrise.d0t.com</email>
      <organization/>
    </developer>
    
    <developer>
      <name>Scott T. Weaver</name>
      <id>weaver</id>
      <email>weaver#a@T#apache.d0t.org</email>
    </developer>
    
    <developer>
      <name>Stefan Hepper</name>
      <id>sthepper</id>
      <email>sthepper#a@T#apache.d0t.org</email>
    </developer>

    <developer>
      <name>Elliot Metsger</name>
      <id>esm</id>
      <email>esm#a@T#apache.d0t.org</email>
      <timezone>-4</timezone>
      <url>http://uppertank.net/blog</url>
      <organization>Johns Hopkins University, Sheridan Libraries</organization>
      <organizationUrl>http://www.library.jhu.edu</organizationUrl>
    </developer>
    
  </developers>
  
  
  <!-- Pluto Contributors ================================================== -->

  <contributors>
    <contributor>
      <name>Michael Westbay</name>
      <email>westbay#a@T#users.d0t.sourceforge.d0t.net</email>
    </contributor>
    <contributor>
      <name>Ken Weiner</name>
      <email>kweiner#a@T#unicon.d0t.net</email>
    </contributor>
    <contributor>
      <name>Ken Atherton</name>
      <email>katherto#a@T#visa.d0t.com</email>
    </contributor>
  </contributors>
  
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  
  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/portals/pluto/trunk</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/portals/pluto/trunk</developerConnection>
    <url>http://svn.apache.org/viewcvs.cgi/portals/pluto/trunk</url>
  </scm>

  <organization>
    <name>Apache Software Foundation</name>
    <url>http://www.apache.org/</url>
  </organization>
  
  
  <!-- Dependency Version Properties ======================================= -->
 
  <!--
    NOTE:
    
    Modification of these properties affects:
    1) Dependent project poms
    2)  maven-pluto-plugin/src/main/resources/versions.properties as well!

    -->
  <properties>
    <portlet-api.version>1.0</portlet-api.version>
    <servlet-api.version>2.3</servlet-api.version>
    <jsp-api.version>2.0</jsp-api.version>
    <jstl.version>1.1.2</jstl.version>
    <taglibs.standard.version>1.0.4</taglibs.standard.version>
    <xerces.version>2.6.2</xerces.version>
    <castor.version>1.0</castor.version>
    <commons-digester.version>1.7</commons-digester.version>
    <commons-collections.version>3.2</commons-collections.version>
    <commons-cli.version>1.0</commons-cli.version>
    <commons-fileupload.version>1.1</commons-fileupload.version>
    <commons-httpclient.version>3.0</commons-httpclient.version>
    <commons-io.version>1.1</commons-io.version>
    <commons-beanutils.version>1.7.0</commons-beanutils.version>
    <commons-logging.version>1.0.4</commons-logging.version>
    <log4j.version>1.2.9</log4j.version>
    <springframework.version>2.0-m2</springframework.version>
    <plexus.version>1.0.4</plexus.version>
    <maven.version>2.0</maven.version>
    <ant.version>1.6.5</ant.version>
    <junit.version>4.0</junit.version>
    <jmock.version>1.0.1</jmock.version>    
  </properties>

  
  <!-- Pluto Modules ======================================================= -->
  
  <modules>
    <!-- Pluto Core Modules -->
    <module>pluto-descriptor-api</module>
    <module>pluto-descriptor-impl</module>
    <module>pluto-container</module>
    <module>pluto-taglib</module>

    <!-- Pluto Portal and Testsuite Modules -->
    <module>pluto-portal-driver</module>
    <module>pluto-portal-driver-impl</module>
    <module>pluto-portal</module>
    <module>pluto-testsuite</module>

    <!-- Pluto Utilities, Maven Plugins and Ant Tasks -->
    <module>pluto-util</module>
    <module>maven-pluto-plugin</module>
    <module>pluto-ant-tasks</module>

    <!-- Pluto Documentations -->
    <module>pluto-site</module>
  </modules>
  
  <distributionManagement>
    <site>
      <id>website</id>
      <url>scp://minotaur.apache.org/www/portals.apache.org/pluto</url>
    </site>
    
    <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 Maven Repository (Snapshots and Test Builds)</name>
       <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>
    </snapshotRepository>

  </distributionManagement>


  <reporting>
    <plugins>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
      </plugin>
      
      <!-- Commented checkstyle plugin: too many logs! -->
      <!--plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
      </plugin-->
      
      <!--plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clover-plugin</artifactId>
      </plugin-->
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
      </plugin>
      
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/src.xml</descriptor>
            <descriptor>src/main/assembly/bin.xml</descriptor>
            <!--descriptor>src/main/assembly/bin-with-tomcat.xml</descriptor-->
            <!--descriptor>src/main/assembly/bin-container.xml</descriptor-->
          </descriptors>
          <outputDirectory>target/dist</outputDirectory>
        </configuration>
      </plugin>      
      
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <tagBase>scm:svn:https://svn.apache.org/repos/asf/portals/pluto/tags</tagBase>
        </configuration>
      </plugin>
      
    </plugins>
  </reporting>

</project>


