<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>18</version>
  </parent>

  <groupId>org.apache.apex</groupId>
  <artifactId>apex</artifactId>
  <version>3.6.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Apex</name>
  <url>http://apex.apache.org</url>
  <inceptionYear>2015</inceptionYear>

  <organization>
    <name>Apache Software Foundation</name>
    <url>http://www.apache.org</url>
  </organization>

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

  <prerequisites>
    <maven>3.0.5</maven>
  </prerequisites>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.optimize>false</maven.compiler.optimize>
    <maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format>
    <hadoop.version>2.6.0</hadoop.version>
    <github.global.server>github</github.global.server>
    <jackson.version>1.9.13</jackson.version>
    <jersey.version>1.9</jersey.version>
    <!-- do not change jetty version as later versions have problems with DefaultServlet -->
    <jetty.version>8.1.10.v20130312</jetty.version>
    <project.old.version>3.5.0</project.old.version>
    <license.skip>true</license.skip>
    <findbugs.xmlOutput>true</findbugs.xmlOutput>
    <findbugs.failOnError>false</findbugs.failOnError>
    <findbugs.skip>false</findbugs.skip>
    <postNoticeText>The initial developer of the original code is&#xA;DataTorrent, Inc. (http://www.datatorrent.com)&#xA;Copyright (c) 2012 - 2015. All Rights Reserved.</postNoticeText>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>pl.pragmatists</groupId>
      <artifactId>JUnitParams</artifactId>
      <version>1.0.4</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <modules>
    <module>common</module>
    <module>api</module>
    <module>bufferserver</module>
    <module>engine</module>
    <module>apex-app-archetype</module>
    <module>apex-conf-archetype</module>
  </modules>

  <build>
    <plugins>
      <plugin>
        <groupId>com.mycila</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <version>3.0</version>
        <configuration>
          <header>header.txt</header>
          <properties>
            <owner>Apache Software Foundation</owner>
            <email>dev@apex.apache.org</email>
          </properties>
          <excludes>
            <exclude>**/*.iml</exclude>
            <exclude>DISCLAIMER</exclude>
            <exclude>LICENSE</exclude>
            <exclude>NOTICE</exclude>
            <exclude>**/NOTICE.vm</exclude>
            <exclude>**/*.md</exclude>
            <exclude>**/*.txt</exclude>
            <exclude>**/*.yml</exclude>
            <exclude>**/src/test/resources/**/*.keytab</exclude>
            <exclude>**/*.importorder</exclude>
            <exclude>**/archetype-resources/**</exclude>
            <exclude>misc/ide-templates/**</exclude>
          </excludes>
          <mapping>
            <apex>SCRIPT_STYLE</apex>
          </mapping>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <encoding>UTF-8</encoding>
          <source>1.7</source>
          <target>1.7</target>
          <debug>true</debug>
          <optimize>true</optimize>
          <showDeprecation>true</showDeprecation>
          <showWarnings>true</showWarnings>
          <compilerArgs>
            <arg>-Xlint:-options</arg><!-- suppress javac warning for missing bootstrap -->
          </compilerArgs>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.1</version>
      </plugin>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>1.14</version>
        <configuration>
          <signature>
            <groupId>org.codehaus.mojo.signature</groupId>
            <artifactId>java17</artifactId>
            <version>1.0</version>
          </signature>
          <ignores>
            <ignore>sun.misc.Unsafe</ignore>
            <ignore>sun.misc.Signal</ignore>
          </ignores>
        </configuration>
        <executions>
          <execution>
            <phase>process-classes</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>.gitattributes</exclude>
            <exclude>.gitignore</exclude>
            <exclude>.git/**</exclude>
            <exclude>.idea/**</exclude>
            <exclude>**/src/test/resources/**/MANIFEST.MF</exclude>
            <exclude>**/src/test/resources/**/*.json</exclude>
            <exclude>**/src/test/resources/**/*.keytab</exclude>
            <exclude>**/archetype-resources/**</exclude>
            <exclude>**/*.md</exclude>
            <exclude>**/*.txt</exclude>
            <exclude>**/*.yml</exclude>
            <exclude>**/*.importorder</exclude>
            <exclude>misc/ide-templates/**</exclude>
            <exclude>**/NOTICE.vm</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>3.0.3</version>
        <configuration>
          <includeTests>true</includeTests>
          <xmlOutput>${findbugs.xmlOutput}</xmlOutput>
          <failOnError>${findbugs.failOnError}</failOnError>
          <skip>${findbugs.skip}</skip>
        </configuration>
        <executions>
          <execution>
            <phase></phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.19.1</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.surefire</groupId>
              <artifactId>surefire-junit47</artifactId>
              <version>2.19.1</version>
            </dependency>
          </dependencies>
          <configuration>
            <excludedGroups>${test.excludedGroups}</excludedGroups>
            <systemPropertyVariables>
              <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
            </systemPropertyVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>nbm-maven-plugin</artifactId>
          <version>3.8</version>
          <extensions>true</extensions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.4</version>
          <configuration>
            <useDefaultManifestFile>true</useDefaultManifestFile>
            <archive>
              <manifest>
                <addClasspath>true</addClasspath>
                <classpathLayoutType>repository</classpathLayoutType>
              </manifest>
            </archive>
            <excludes>
              <exclude>log4j.properties</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.9</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>1.2.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.4.1</version>
          <executions>
            <execution>
              <id>enforce-java</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireJavaVersion>
                    <version>[1.7.0,)</version>
                    <message>Build requires Java 1.7 or above.</message>
                  </requireJavaVersion>
                </rules>
              </configuration>
            </execution>
            <execution>
              <id>enforce-maven</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireMavenVersion>
                    <version>[3.0.5,)</version>
                    <message>Build requires Maven 3.0.5 or above.</message>
                  </requireMavenVersion>
                </rules>
              </configuration>
            </execution>
            <execution>
              <id>enforce-release-dependencies</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireReleaseDeps>
                    <message>Snapshots dependencies are not allowed for release build.</message>
                    <onlyWhenRelease>true</onlyWhenRelease>
                  </requireReleaseDeps>
                </rules>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>2.17</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.apex</groupId>
              <artifactId>apex-codestyle-config</artifactId>
              <version>1.1.0</version>
            </dependency>
            <dependency>
              <groupId>com.puppycrawl.tools</groupId>
              <artifactId>checkstyle</artifactId>
              <version>6.15</version>
            </dependency>
          </dependencies>
          <executions>
            <execution>
              <id>checkstyle</id>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <configLocation>apex_checks.xml</configLocation>
            <suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
            <includeTestSourceDirectory>true</includeTestSourceDirectory>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>0.11</version>
        </plugin>
        <plugin>
          <groupId>com.github.siom79.japicmp</groupId>
          <artifactId>japicmp-maven-plugin</artifactId>
          <version>0.9.0</version>
          <configuration>
            <oldVersion>
              <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>${project.artifactId}</artifactId>
                <version>${project.old.version}</version>
              </dependency>
            </oldVersion>
            <newVersion>
              <file>
                <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path>
              </file>
            </newVersion>
            <parameter>
              <onlyModified>true</onlyModified>
              <accessModifier>protected</accessModifier>
              <breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning>
              <onlyBinaryIncompatible>false</onlyBinaryIncompatible>
              <includeSynthetic>false</includeSynthetic>
              <ignoreMissingClasses>false</ignoreMissingClasses>
              <excludes>
                <exclude>@org.apache.hadoop.classification.InterfaceStability$Evolving</exclude>
                <exclude>@org.apache.hadoop.classification.InterfaceStability$Unstable</exclude>
              </excludes>
            </parameter>
          </configuration>
          <executions>
            <execution>
              <phase>verify</phase>
              <goals>
                <goal>cmp</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-webdav-jackrabbit</artifactId>
        <version>2.2</version>
      </extension>
    </extensions>
  </build>
  <profiles>
    <profile>
      <id>apache-release</id>
      <modules>
      </modules>
      <properties>
        <maven.compiler.debug>false</maven.compiler.debug>
        <maven.compiler.optimize>true</maven.compiler.optimize>
        <maven.deploy.skip>false</maven.deploy.skip>
        <distMgmtSnapshotsId>apache.snapshots.https</distMgmtSnapshotsId>
        <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>
        <distMgmtReleaseId>apache.staging.https</distMgmtReleaseId>
        <distMgmtReleaseUrl>https://repository.apache.org/service/local/staging/deploy/maven2</distMgmtReleaseUrl>
        <distMgmtDevUrl>file://${project.build.directory}/mvn-repo</distMgmtDevUrl>
        <sourceReleaseAssemblyDescriptor>source-release-zip-tar</sourceReleaseAssemblyDescriptor>
      </properties>
      <distributionManagement>
        <repository>
          <id>${distMgmtReleaseId}</id>
          <url>${distMgmtReleaseUrl}</url>
        </repository>
        <snapshotRepository>
          <id>${distMgmtSnapshotsId}</id>
          <url>${distMgmtSnapshotsUrl}</url>
        </snapshotRepository>
      </distributionManagement>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.9.1</version>
            <executions>
              <execution>
                <id>parse-version</id>
                <goals>
                  <goal>parse-version</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <activation>
        <file>
          <exists>${basedir}/NOTICE</exists>
        </file>
      </activation>
      <properties>
        <remoteresources.skip>true</remoteresources.skip>
        <!-- do not push source archives to the repo - see MPOM-90 -->
        <assembly.attach>false</assembly.attach>
      </properties>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <finalName>apache-apex-core-${project.version}</finalName>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
