<?xml version="1.0" encoding="UTF-8" ?>
<!--
 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">

  <modelVersion>4.0.0</modelVersion>
    <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>18</version>
  </parent>
  <groupId>org.apache.turbine</groupId>
  <artifactId>turbine-webapp-4.0</artifactId>
  <version>1.0.1</version>
  <packaging>maven-archetype</packaging>

  <name>Archetype - Turbine 4.0M2 WebApp</name>
  <description>This archetype sets up a web application project based on Apache Turbine 4.0M2</description>
  <url>http://turbine.apache.org</url>

  <inceptionYear>2011</inceptionYear>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/turbine/maven/archetypes/tags/turbine-webapp-4.0-1.0.1</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/turbine/maven/archetypes/tags/turbine-webapp-4.0-1.0.1</developerConnection>
    <url>http://svn.apache.org/viewvc/turbine/maven/archetypes/tags/turbine-webapp-4.0-1.0.1</url>
  </scm>
  
<build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.archetype</groupId>
        <artifactId>archetype-packaging</artifactId>
        <version>2.4</version>
      </extension>
    </extensions>

    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-archetype-plugin</artifactId>
          <version>2.4</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

</project>
