<?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>16</version>
  </parent>

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

  <name>Apache Apex (incubating)</name>
  <url>http://apex.incubator.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.2.0</hadoop.version>
    <github.global.server>github</github.global.server>
    <jackson.version>1.9.2</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>
    <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>
  </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>2.11</version>
        <configuration>
          <header>header.txt</header>
          <properties>
            <owner>Apache Software Foundation</owner>
            <email>dev@apex.incubator.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>**/*.importorder</exclude>
            <exclude>**/archetype-resources/**</exclude>
            <exclude>misc/ide-templates/**</exclude>
          </excludes>
          <mapping>
            <dtcli>SCRIPT_STYLE</dtcli>
          </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>
        </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>
            <ignore>java.util.zip.Deflater</ignore>
            <ignore>java.util.concurrent.LinkedTransferQueue</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>**/resources/META-INF/services/**</exclude>
            <exclude>**/archetype-resources/**</exclude>
            <exclude>**/*.md</exclude>
            <exclude>**/*.txt</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.14.1</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.surefire</groupId>
              <artifactId>surefire-junit47</artifactId>
              <version>2.14.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>com.puppycrawl.tools</groupId>
              <artifactId>checkstyle</artifactId>
              <version>6.14</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.6.2</version>
          <configuration>
            <oldVersion>
              <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>${project.artifactId}</artifactId>
                <version>3.3.0-incubating</version>
              </dependency>
            </oldVersion>
            <newVersion>
              <file>
                <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path>
              </file>
            </newVersion>
            <parameter>
              <onlyModified>true</onlyModified>
              <accessModifier>protected</accessModifier>
              <breakBuildOnModifications>true</breakBuildOnModifications>
              <breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
              <onlyBinaryIncompatible>false</onlyBinaryIncompatible>
              <includeSynthetic>false</includeSynthetic>
              <ignoreMissingClasses>false</ignoreMissingClasses>
              <excludes>
                <exclude>*#toString()</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>
        <package.prefix>/opt/datatorrent</package.prefix>
        <package.groupname>dtorrent</package.groupname>
      </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>
          <missing>${basedir}/src/main</missing>
        </file>
      </activation>
      <properties>
        <remoteresources.skip>true</remoteresources.skip>
      </properties>
    </profile>
  </profiles>
</project>
