<?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.
 */
 -->

<!-- =================================================================== -->
<!--                                                                     -->
<!--  Maven project.xml Datei                                            -->
<!--                                                                     -->
<!-- $Id$           -->
<!--                                                                     -->
<!-- =================================================================== -->

<project>
  <pomVersion>3</pomVersion>
  <id>maven-turbine-plugin</id>
  <name>Maven Environment for Turbine Applications Plugin</name>
  <groupId>turbine</groupId>
  <currentVersion>1.2</currentVersion>
  <organization>
    <name>Apache Software Foundation</name>
    <url>http://jakarta.apache.org/</url>
    <logo>/images/jakarta.png</logo>
  </organization>
  <inceptionYear>2004</inceptionYear>
  <logo>/images/blue-logo.gif</logo>
  <description>
    The Maven Environment for Turbine Applications (M.E.T.A.) is a replacement
    for the Turbine Development Kit. It is based on Maven and contains a well
    defined setup for starting new Turbine applications.
  </description>
  <shortDescription>Maven Environment for Turbine Applications</shortDescription>
  <url>http://jakarta.apache.org/turbine/meta/</url>
  <issueTrackingUrl>http://issues.apache.org/scarab/issues</issueTrackingUrl>
  <siteAddress>jakarta.apache.org</siteAddress>
  <siteDirectory>/www/jakarta.apache.org/turbine/meta/</siteDirectory>
  <distributionSite>www.apache.org</distributionSite>
  <distributionDirectory>/www/www.apache.org/dist/java-repository/</distributionDirectory>

  <repository>
    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-turbine-2/extensions/maven-plugin</connection>
    <developerConnection>scm:cvs:ext:${maven.username}@cvs.apache.org:/home/cvs:jakarta-turbine-2/extensions/maven-plugin</developerConnection>
    <url>http://cvs.apache.org/viewcvs/jakarta-turbine-2/extensions/maven-plugin/</url>
  </repository>

  <mailingLists>
    <mailingList>
      <name>Turbine User List</name>
      <subscribe>turbine-user-subscribe@jakarta.apache.org</subscribe>
      <unsubscribe>turbine-user-unsubscribe@jakarta.apache.org</unsubscribe>
      <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=turbine-user@jakarta.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Turbine Developer List</name>
      <subscribe>turbine-dev-subscribe@jakarta.apache.org</subscribe>
      <unsubscribe>turbine-dev-unsubscribe@jakarta.apache.org</unsubscribe>
      <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=turbine-dev@jakarta.apache.org</archive>
    </mailingList>
  </mailingLists>

  <versions>
    <version>
      <id>1</id>
      <name>1.2-rc1</name>
      <tag>META_1_2_RC1</tag>
    </version>
  </versions>

  <developers>
    <developer>
      <name>Eric Pugh</name>
      <id>epugh</id>
      <email>epugh@opensourceconnections.com</email>
      <organization>OpenSource Connections</organization>
      <roles>
        <role>Java Developer</role>
      </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>
  </developers>
  <versions>
    <version>
      <name>1.2-rc1</name>
      <tag>META_1_2_RC1</tag>
    </version>
  </versions>

  <contributors>
    <contributor>
      <name>Lester Ward</name>
      <email>lward@tagaudit.com</email>
      <roles>
        <role>Java Contributor</role>
      </roles>
    </contributor>      
  </contributors>

  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <dependencies>
   <dependency> 
      <groupId>torque</groupId> 
      <artifactId>maven-torque-plugin</artifactId> 
      <version>3.1.1</version> 
      <url>http://db.apache.org/torque/</url> 
      <type>plugin</type>
    </dependency> 
  </dependencies>

  <build>
    <resources>
      <resource> 
        <directory>${basedir}/src/plugin-resources</directory> 
         <targetPath>plugin-resources</targetPath> 
       </resource> 
       <resource> 
         <directory>${basedir}/src/plugin</directory> 
         <targetPath>/</targetPath> 
       </resource> 
       <resource> 
         <directory>${basedir}</directory> 
         <includes> 
           <include>project.xml</include> 
         </includes> 
       </resource> 
    </resources>
  </build>
  <reports>
    <report>maven-changes-plugin</report>
    <report>maven-changelog-plugin</report>
    <report>maven-developer-activity-plugin</report>
    <report>maven-file-activity-plugin</report>
    <report>maven-linkcheck-plugin</report>
  </reports>
</project>
