<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2013 The ActFramework Starters Project
  ~
  ~ The ActFramework maven parent Project 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>

  <artifactId>act-starter-parent</artifactId>
  <name>ActFramework Starter Parent</name>
  <packaging>pom</packaging>
  <description>Parent for ActFramework application</description>

  <properties>
    <main.basedir>${basedir}/..</main.basedir>
    <maven-assemply-plugin.version>3.1.0</maven-assemply-plugin.version>
    <maven-dependency-plugin.version>3.0.2</maven-dependency-plugin.version>
    <maven-resources-plugin.version>3.0.2</maven-resources-plugin.version>
    <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
    <docker-maven-plugin.version>0.30.0</docker-maven-plugin.version>
    <act-maven-plugin.version>1.9.1.0</act-maven-plugin.version>
    <act-starter-support.version>1.9.1</act-starter-support.version>
    <vmargs.heap.init>128M</vmargs.heap.init>
    <vmargs.heap.max>1G</vmargs.heap.max>
    <vmargs.extended />
    <docker.repo>${project.groupId}/${project.artifactId}</docker.repo>
    <docker.profile>prod</docker.profile>
    <docker.group>default</docker.group>
    <docker.http.port>5460</docker.http.port>
    <docker.cli.port>5461</docker.cli.port>
    <logback.version>1.2.3</logback.version>
  </properties>

  <parent>
    <groupId>org.actframework</groupId>
    <artifactId>act-starters</artifactId>
    <version>1.9.2.0</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>${logback.version}</version>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
          <!-- pack -->
          <exclude>**/*.7z</exclude>
          <exclude>**/*.ace</exclude>
          <exclude>**/*.apk</exclude>
          <exclude>**/*.arc</exclude>
          <exclude>**/*.arj</exclude>
          <exclude>**/*.bz2</exclude>
          <exclude>**/*.cab</exclude>
          <exclude>**/*.deb</exclude>
          <exclude>**/*.iso</exclude>
          <exclude>**/*.jar</exclude>
          <exclude>**/*.rar</exclude>
          <exclude>**/*.tar</exclude>
          <exclude>**/*.tgz</exclude>
          <exclude>**/*.war</exclude>
          <exclude>**/*.zip</exclude>
          <!-- documents -->
          <exclude>**/*.accdb</exclude>
          <exclude>**/*.accde</exclude>
          <exclude>**/*.accdt</exclude>
          <exclude>**/*.accdr</exclude>
          <exclude>**/*.doc</exclude>
          <exclude>**/*.docx</exclude>
          <exclude>**/*.pdf</exclude>
          <exclude>**/*.ppt</exclude>
          <exclude>**/*.pptx</exclude>
          <exclude>**/*.rtf</exclude>
          <exclude>**/*.xls</exclude>
          <exclude>**/*.xlsx</exclude>
          <!-- fonts -->
          <exclude>**/*.eot</exclude>
          <exclude>**/*.fon</exclude>
          <exclude>**/*.otf</exclude>
          <exclude>**/*.ttf</exclude>
          <exclude>**/*.woff</exclude>
          <!-- media -->
          <exclude>**/*.avi</exclude>
          <exclude>**/*.aac</exclude>
          <exclude>**/*.bmp</exclude>
          <exclude>**/*.cur</exclude>
          <exclude>**/*.flv</exclude>
          <exclude>**/*.gif</exclude>
          <exclude>**/*.ico</exclude>
          <exclude>**/*.jpeg</exclude>
          <exclude>**/*.jpg</exclude>
          <exclude>**/*.mpe</exclude>
          <exclude>**/*.mpeg</exclude>
          <exclude>**/*.mpg</exclude>
          <exclude>**/*.mov</exclude>
          <exclude>**/*.mp3</exclude>
          <exclude>**/*.pcx</exclude>
          <exclude>**/*.png</exclude>
          <exclude>**/*.psd</exclude>
          <exclude>**/*.raw</exclude>
          <exclude>**/*.tiff</exclude>
          <exclude>**/*.wav</exclude>
          <exclude>**/*.wma</exclude>
          <exclude>**/*.wmv</exclude>
          <!-- other binaries -->
          <exclude>**/*.bin</exclude>
          <exclude>**/*.cer</exclude>
          <exclude>**/*.com</exclude>
          <exclude>**/*.crt</exclude>
          <exclude>**/*.dat</exclude>
          <exclude>**/*.der</exclude>
          <exclude>**/*.db</exclude>
          <exclude>**/*.dbf</exclude>
          <exclude>**/*.exe</exclude>
          <exclude>**/*.p12</exclude>
          <exclude>**/*.pfx</exclude>
        </excludes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
        <includes>
          <!-- pack -->
          <include>**/*.7z</include>
          <include>**/*.ace</include>
          <include>**/*.apk</include>
          <include>**/*.arc</include>
          <include>**/*.arj</include>
          <include>**/*.bz2</include>
          <include>**/*.cab</include>
          <include>**/*.deb</include>
          <include>**/*.iso</include>
          <include>**/*.jar</include>
          <include>**/*.rar</include>
          <include>**/*.tar</include>
          <include>**/*.tgz</include>
          <include>**/*.war</include>
          <include>**/*.zip</include>
          <!-- documents -->
          <include>**/*.accdb</include>
          <include>**/*.accde</include>
          <include>**/*.accdt</include>
          <include>**/*.accdr</include>
          <include>**/*.doc</include>
          <include>**/*.docx</include>
          <include>**/*.pdf</include>
          <include>**/*.ppt</include>
          <include>**/*.pptx</include>
          <include>**/*.rtf</include>
          <include>**/*.xls</include>
          <include>**/*.xlsx</include>
          <!-- fonts -->
          <include>**/*.eot</include>
          <include>**/*.fon</include>
          <include>**/*.otf</include>
          <include>**/*.ttf</include>
          <include>**/*.woff</include>
          <!-- media -->
          <include>**/*.avi</include>
          <include>**/*.aac</include>
          <include>**/*.bmp</include>
          <include>**/*.cur</include>
          <include>**/*.flv</include>
          <include>**/*.gif</include>
          <include>**/*.ico</include>
          <include>**/*.jpeg</include>
          <include>**/*.jpg</include>
          <include>**/*.mpe</include>
          <include>**/*.mpeg</include>
          <include>**/*.mpg</include>
          <include>**/*.mov</include>
          <include>**/*.mp3</include>
          <include>**/*.pcx</include>
          <include>**/*.png</include>
          <include>**/*.psd</include>
          <include>**/*.raw</include>
          <include>**/*.tiff</include>
          <include>**/*.wav</include>
          <include>**/*.wma</include>
          <include>**/*.wmv</include>
          <!-- other binaries -->
          <include>**/*.bin</include>
          <include>**/*.cer</include>
          <include>**/*.com</include>
          <include>**/*.crt</include>
          <include>**/*.dat</include>
          <include>**/*.der</include>
          <include>**/*.db</include>
          <include>**/*.dbf</include>
          <include>**/*.exe</include>
          <include>**/*.ine</include>
          <include>**/*.p12</include>
          <include>**/*.pfx</include>
        </includes>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <filtering>true</filtering>
        <excludes>
          <!-- pack -->
          <exclude>**/*.7z</exclude>
          <exclude>**/*.ace</exclude>
          <exclude>**/*.apk</exclude>
          <exclude>**/*.arc</exclude>
          <exclude>**/*.arj</exclude>
          <exclude>**/*.bz2</exclude>
          <exclude>**/*.cab</exclude>
          <exclude>**/*.deb</exclude>
          <exclude>**/*.iso</exclude>
          <exclude>**/*.jar</exclude>
          <exclude>**/*.rar</exclude>
          <exclude>**/*.tar</exclude>
          <exclude>**/*.tgz</exclude>
          <exclude>**/*.war</exclude>
          <exclude>**/*.zip</exclude>
          <!-- documents -->
          <exclude>**/*.doc</exclude>
          <exclude>**/*.docx</exclude>
          <exclude>**/*.pdf</exclude>
          <exclude>**/*.ppt</exclude>
          <exclude>**/*.pptx</exclude>
          <exclude>**/*.rtf</exclude>
          <exclude>**/*.xls</exclude>
          <exclude>**/*.xlsx</exclude>
          <!-- fonts -->
          <exclude>**/*.eot</exclude>
          <exclude>**/*.fon</exclude>
          <exclude>**/*.otf</exclude>
          <exclude>**/*.ttf</exclude>
          <exclude>**/*.woff</exclude>
          <!-- media -->
          <exclude>**/*.avi</exclude>
          <exclude>**/*.aac</exclude>
          <exclude>**/*.bmp</exclude>
          <exclude>**/*.cur</exclude>
          <exclude>**/*.flv</exclude>
          <exclude>**/*.gif</exclude>
          <exclude>**/*.ico</exclude>
          <exclude>**/*.jpeg</exclude>
          <exclude>**/*.jpg</exclude>
          <exclude>**/*.mpe</exclude>
          <exclude>**/*.mpeg</exclude>
          <exclude>**/*.mpg</exclude>
          <exclude>**/*.mov</exclude>
          <exclude>**/*.mp3</exclude>
          <exclude>**/*.pcx</exclude>
          <exclude>**/*.png</exclude>
          <exclude>**/*.psd</exclude>
          <exclude>**/*.raw</exclude>
          <exclude>**/*.tiff</exclude>
          <exclude>**/*.wav</exclude>
          <exclude>**/*.wma</exclude>
          <exclude>**/*.wmv</exclude>
          <!-- other binaries -->
          <exclude>**/*.bin</exclude>
          <exclude>**/*.cer</exclude>
          <exclude>**/*.com</exclude>
          <exclude>**/*.crt</exclude>
          <exclude>**/*.dat</exclude>
          <exclude>**/*.der</exclude>
          <exclude>**/*.db</exclude>
          <exclude>**/*.dbf</exclude>
          <exclude>**/*.exe</exclude>
          <exclude>**/*.p12</exclude>
          <exclude>**/*.pfx</exclude>
        </excludes>
      </testResource>
      <testResource>
        <directory>src/test/resources</directory>
        <filtering>false</filtering>
        <includes>
          <!-- pack -->
          <include>**/*.7z</include>
          <include>**/*.ace</include>
          <include>**/*.apk</include>
          <include>**/*.arc</include>
          <include>**/*.arj</include>
          <include>**/*.bz2</include>
          <include>**/*.cab</include>
          <include>**/*.deb</include>
          <include>**/*.iso</include>
          <include>**/*.jar</include>
          <include>**/*.rar</include>
          <include>**/*.tar</include>
          <include>**/*.tgz</include>
          <include>**/*.war</include>
          <include>**/*.zip</include>
          <!-- documents -->
          <include>**/*.doc</include>
          <include>**/*.docx</include>
          <include>**/*.pdf</include>
          <include>**/*.ppt</include>
          <include>**/*.pptx</include>
          <include>**/*.rtf</include>
          <include>**/*.xls</include>
          <include>**/*.xlsx</include>
          <!-- fonts -->
          <include>**/*.eot</include>
          <include>**/*.fon</include>
          <include>**/*.otf</include>
          <include>**/*.ttf</include>
          <include>**/*.woff</include>
          <!-- media -->
          <include>**/*.avi</include>
          <include>**/*.aac</include>
          <include>**/*.bmp</include>
          <include>**/*.cur</include>
          <include>**/*.flv</include>
          <include>**/*.gif</include>
          <include>**/*.ico</include>
          <include>**/*.jpeg</include>
          <include>**/*.jpg</include>
          <include>**/*.mpe</include>
          <include>**/*.mpeg</include>
          <include>**/*.mpg</include>
          <include>**/*.mov</include>
          <include>**/*.mp3</include>
          <include>**/*.pcx</include>
          <include>**/*.png</include>
          <include>**/*.psd</include>
          <include>**/*.raw</include>
          <include>**/*.tiff</include>
          <include>**/*.wav</include>
          <include>**/*.wma</include>
          <include>**/*.wmv</include>
          <!-- other binaries -->
          <include>**/*.bin</include>
          <include>**/*.cer</include>
          <include>**/*.com</include>
          <include>**/*.crt</include>
          <include>**/*.dat</include>
          <include>**/*.der</include>
          <include>**/*.db</include>
          <include>**/*.dbf</include>
          <include>**/*.ine</include>
          <include>**/*.p12</include>
          <include>**/*.pfx</include>
        </includes>
      </testResource>
    </testResources>
    <plugins>
      <plugin>
        <!-- disable license maven plugin as we want commercial project use this parent -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>first</id>
            <phase />
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>${maven-dependency-plugin.version}</version>
        <executions>
          <execution>
            <id>unpack</id>
            <phase>process-resources</phase>
            <goals>
              <goal>unpack</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.actframework</groupId>
                  <artifactId>act-starter-support</artifactId>
                  <version>${act-starter-support.version}</version>
                  <type>jar</type>
                  <overWrite>false</overWrite>
                  <outputDirectory>${project.build.directory}/stage</outputDirectory>
                  <includes>act_scripts/**</includes>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.actframework</groupId>
        <artifactId>act-maven-plugin</artifactId>
        <version>${act-maven-plugin.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>${maven-assemply-plugin.version}</version>
        <configuration>
          <tarLongFileMode>posix</tarLongFileMode>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.actframework</groupId>
            <artifactId>act-starter-support</artifactId>
            <version>${act-starter-support.version}</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>create-archive</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <appendAssemblyId>false</appendAssemblyId>
              <descriptorRefs>
                <descriptorRef>act-app-pkg</descriptorRef>
              </descriptorRefs>
              <outputDirectory>${project.build.directory}/dist/</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-scripts</id>
            <phase>compile</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.outputDirectory}/act_scripts</outputDirectory>
              <resources>
                <resource>
                  <filtering>true</filtering>
                  <directory>${project.build.directory}/stage/act_scripts</directory>
                  <excludes>
                    <exclude>Dockerfile</exclude>
                    <exclude>Dockerimage</exclude>
                  </excludes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>docker-def-dockerfile</id>
      <activation>
        <file>
          <missing>${basedir}/src/main/resources/docker/Dockerfile</missing>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>${maven-resources-plugin.version}</version>
            <executions>
              <execution>
                <id>copy-dockerfile</id>
                <phase>compile</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/dist</outputDirectory>
                  <resources>
                    <resource>
                      <filtering>true</filtering>
                      <directory>${project.build.directory}/stage/act_scripts</directory>
                      <includes>
                        <include>Dockerfile</include>
                      </includes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>docker-app-dockerfile</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/resources/docker/Dockerfile</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>${maven-resources-plugin.version}</version>
            <executions>
              <execution>
                <id>copy-dockerfile</id>
                <phase>compile</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/dist</outputDirectory>
                  <resources>
                    <resource>
                      <filtering>true</filtering>
                      <directory>${basedir}/src/main/resources/docker</directory>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>docker</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
              <execution>
                <id>clean-dist</id>
                <phase>validate</phase>
                <goals>
                  <goal>clean</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <filesets>
                <fileset>
                  <directory>${project.build.directory}/dist</directory>
                  <includes>
                    <include>**/*.tgz</include>
                  </includes>
                  <followSymlinks>false</followSymlinks>
                </fileset>
              </filesets>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>${maven-resources-plugin.version}</version>
            <executions>
              <execution>
                <id>copy-dockerimage</id>
                <phase>compile</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/dist</outputDirectory>
                  <resources>
                    <resource>
                      <filtering>true</filtering>
                      <directory>${project.build.directory}/stage/act_scripts</directory>
                      <includes>
                        <include>Dockerimage</include>
                      </includes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>${docker-maven-plugin.version}</version>
            <configuration>
              <images>
                <image>
                  <name>${docker.repo}:${project.version}-b${buildNumber}</name>
                  <build>
                    <dockerFileDir>${project.build.directory}/dist</dockerFileDir>
                  </build>
                </image>
              </images>
            </configuration>
            <executions>
              <execution>
                <id>build</id>
                <phase>package</phase>
                <goals>
                  <goal>build</goal>
                </goals>
              </execution>
              <execution>
                <id>push</id>
                <phase>install</phase>
                <goals>
                  <goal>push</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
