<?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>23</version><!-- like turbine parent -->
  </parent>
  <groupId>org.apache.turbine</groupId>
  <artifactId>turbine-webapp-5.1</artifactId>
  <version>2.0.0-SNAPSHOT</version>
  <packaging>maven-archetype</packaging>

  <name>Archetype - Turbine 5.1 WebApp</name>
  <description>This archetype sets up a web application project based on Apache Turbine 5.x and Torque 5.x</description>
  <url>https://turbine.apache.org</url>

  <inceptionYear>2011</inceptionYear>

  <scm>
    <connection>scm:git:https://github.com/apache/turbine-archetypes</connection>
    <developerConnection>scm:git:https://github.com/apache/turbine-archetypes</developerConnection>
    <url>scm:git:https://github.com/apache/turbine-archetypes</url>
    <tag>HEAD</tag>
  </scm>
  
   <properties>
	<turbine_database_url>jdbc:mysql://localhost:3306/</turbine_database_url>
    <docker>false</docker>
    <app_volume_local_repo>not_used</app_volume_local_repo>
  </properties>
  
  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.archetype</groupId>
        <artifactId>archetype-packaging</artifactId>
        <version>3.2.0</version>
      </extension>
    </extensions>

    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-archetype-plugin</artifactId>
          <version>3.2.0</version>
           <!-- skip tests in generated archetype's pom, here the integration-test would be skipped -->
          <!--configuration>
            <skip>true</skip>
          </configuration-->   
        </plugin>
      </plugins>
    </pluginManagement>
    
   <plugins>
        <!-- filtering for docker -->
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
              <execution>
                <id>copy-resources</id>
                <phase>validate</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${basedir}/target/test-classes</outputDirectory>
                  <resources>          
                    <resource>
                      <directory>src/test/resources</directory>
                      <filtering>true</filtering>
                    </resource>
                  </resources>              
                </configuration>            
              </execution>
            </executions>
          </plugin>
        </plugins>
  </build>
  
    <profiles>
    <!-- to test in integration-test -->
        <profile>
            <id>docker</id>
            <activation>
              <property>
                <name>docker</name>
              </property>
             </activation>
             <properties>
                <turbine_database_url>jdbc:mysql://db:3306/</turbine_database_url>
                <!-- to provide your locale maven repo, required if you need local snapshot builds -->
                <app_volume_local_repo>${settings.localRepository}</app_volume_local_repo>
                <docker>true</docker>
            </properties>
        </profile>
    </profiles>

</project>
