<?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>
    <groupId>org.apache.metron</groupId>
    <artifactId>Metron</artifactId>
    <version>0.6.0</version>
    <packaging>pom</packaging>
    <name>Metron</name>
    <description>Metron Top Level Project</description>
    <url>https://metron.apache.org/</url>
    <organization>
        <name>The Apache Software Foundation</name>
        <url>https://www.apache.org</url>
    </organization>
    <modules>
        <module>metron-analytics</module>
        <module>metron-platform</module>
        <module>metron-deployment</module>
        <module>metron-contrib</module>
        <module>metron-interface</module>
        <module>site-book</module>
        <module>metron-stellar</module>
    </modules>

    <repositories>
        <repository>
            <id>clojars.org</id>
            <url>http://clojars.org/repo</url>
        </repository>
        <repository>
          <id>jcenter</id>
          <url>https://jcenter.bintray.com/</url>
        </repository>
        <repository>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </snapshots>
            <id>HDPReleases</id>
            <name>HDP Releases</name>
            <url>http://repo.hortonworks.com/content/repositories/releases/</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>multiline-release-repo</id>
            <url>https://raw.github.com/benelog/multiline/master/maven-repository</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
            <id>apache.snapshots</id>
            <name>Apache Development Snapshot Repository</name>
            <url>https://repository.apache.org/content/repositories/snapshots/</url>
            <layout>default</layout>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <updatePolicy>always</updatePolicy>
                <enabled>true</enabled>
                <checksumPolicy>warn</checksumPolicy>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
    <properties>
        <twitter>@ApacheMetron</twitter>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- base project versions -->
        <base_storm_version>1.0.1</base_storm_version>
        <base_flux_version>1.0.1</base_flux_version>
        <base_kafka_version>0.10.0</base_kafka_version>
        <base_hadoop_version>2.7.1</base_hadoop_version>
        <base_hbase_version>1.1.1</base_hbase_version>
        <base_flume_version>1.5.2</base_flume_version>
        <!-- full dependency versions -->
        <global_accumulo_version>1.8.0</global_accumulo_version>
        <global_caffeine_version>2.6.2</global_caffeine_version>
        <global_antlr_version>4.5</global_antlr_version>
        <global_opencsv_version>3.7</global_opencsv_version>
        <global_curator_version>2.7.1</global_curator_version>
        <global_classindex_version>3.3</global_classindex_version>
        <global_storm_version>1.0.3</global_storm_version>
        <global_storm_kafka_version>1.2.2</global_storm_kafka_version>
        <global_flux_version>${base_flux_version}</global_flux_version>
        <global_pcap_version>1.7.1</global_pcap_version>
        <global_kafka_version>0.10.0.1</global_kafka_version>
        <global_hadoop_version>${base_hadoop_version}</global_hadoop_version>
        <global_hbase_version>${base_hbase_version}</global_hbase_version>
        <global_flume_version>${base_flume_version}</global_flume_version>
        <global_elasticsearch_version>5.6.2</global_elasticsearch_version>
        <global_json_simple_version>1.1.1</global_json_simple_version>
        <global_metrics_version>3.0.2</global_metrics_version>
        <global_junit_version>4.12</global_junit_version>
        <global_guava_version>17.0</global_guava_version>
        <global_hbase_guava_version>12.0</global_hbase_guava_version>
        <global_json_schema_validator_version>2.2.5</global_json_schema_validator_version>
        <global_slf4j_version>1.7.7</global_slf4j_version>
        <global_opencsv_version>3.7</global_opencsv_version>
        <global_java_version>1.8</global_java_version>
        <global_solr_version>6.6.2</global_solr_version>
        <global_mockito_version>1.10.19</global_mockito_version>
        <global_powermock_version>1.7.0</global_powermock_version>
        <global_shade_version>2.4.3</global_shade_version>
        <global_jackson_version>2.7.4</global_jackson_version>
        <global_errorprone_core_version>2.0.14</global_errorprone_core_version>
        <global_jar_version>3.0.2</global_jar_version>
        <global_surefire_version>2.18</global_surefire_version>
        <global_maven_version>[3.3.1,)</global_maven_version>
        <global_kryo_version>3.0.3</global_kryo_version>
        <global_kryo_serializers_version>0.38</global_kryo_serializers_version>
        <global_reflections_version>0.9.10</global_reflections_version>
        <global_checkstyle_version>8.0</global_checkstyle_version>
        <global_log4j_core_version>2.1</global_log4j_core_version>
    </properties>

    <profiles>
        <profile>
            <id>HDP-2.5.0.0</id>
            <properties>
                <hdp_version>2.5.0.0</hdp_version>
                <build_number>1245</build_number>
                <global_storm_kafka_version>1.2.2</global_storm_kafka_version>
                <global_storm_version>${base_storm_version}.${hdp_version}-${build_number}</global_storm_version>
                <global_kafka_version>${base_kafka_version}.${hdp_version}-${build_number}</global_kafka_version>
            </properties>
        </profile>
    </profiles>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${global_mockito_version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.storm</groupId>
                <artifactId>storm-kafka</artifactId>
                <version>${global_storm_version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <!-- Separates the unit tests from the integration tests. -->
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${global_surefire_version}</version>
                    <configuration>
                        <!-- Skip the default running of this plug-in (or everything is run twice...see below) -->
                        <argLine>-Xmx2048m</argLine>
                        <skip>true</skip>
                        <!-- Show 100% of the lines from the stack trace (doesn't work) -->
                        <trimStackTrace>false</trimStackTrace>
                    </configuration>
                    <executions>
                        <execution>
                            <id>unit-tests</id>
                            <phase>test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
                                <!-- Never skip running the tests when the test phase is invoked -->
                                <skip>false</skip>
                                <includes>
                                    <!-- Include unit tests within integration-test phase. -->
                                    <include>**/*Test.java</include>
                                </includes>
                                <excludes>
                                    <!-- Exclude integration tests within (unit) test phase. -->
                                    <exclude>**/*IntegrationTest.java</exclude>
                                </excludes>
                            </configuration>
                        </execution>
                        <execution>
                            <id>integration-tests</id>
                            <phase>integration-test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
                                <!-- Never skip running the tests when the integration-test phase is invoked -->
                                <skip>false</skip>
                                <includes>
                                    <!-- Include integration tests within integration-test phase. -->
                                    <include>**/*IntegrationTest.java</include>
                                </includes>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <tarLongFileMode>posix</tarLongFileMode>
                    </configuration>
                </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>${global_checkstyle_version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-site-plugin</artifactId>
              <version>3.6</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <compilerId>javac-with-errorprone</compilerId>
                    <forceJavacCompilerUse>true</forceJavacCompilerUse>
                    <source>${global_java_version}</source>
                    <compilerArgument>-Xlint:unchecked</compilerArgument>
                    <target>${global_java_version}</target>
                    <showWarnings>true</showWarnings>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.codehaus.plexus</groupId>
                        <artifactId>plexus-compiler-javac-errorprone</artifactId>
                        <version>2.8</version>
                    </dependency>
                    <!-- override plexus-compiler-javac-errorprone's dependency on
                         Error Prone with the latest version -->
                    <dependency>
                        <groupId>com.google.errorprone</groupId>
                        <artifactId>error_prone_core</artifactId>
                        <version>${global_errorprone_core_version}</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <check />
                    <formats>
                        <format>html</format>
                    </formats>
                    <aggregate>true</aggregate>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.9</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <version>0.13-SNAPSHOT</version>
                <executions>
                    <execution>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludes>
                        <exclude>dependencies_with_url.csv</exclude>
                        <!-- In travis we need to pull down maven 3.3.9, so we should exclude it here as it is not our code. -->
                        <exclude>apache-maven-3.3.9/**</exclude>
                        <exclude>**/VERSION</exclude>
                        <exclude>**/*.json</exclude>
                        <exclude>**/*.json.j2</exclude>
                        <exclude>**/*.tokens</exclude>
                        <exclude>**/*.log</exclude>
                        <exclude>**/*.template</exclude>
                        <exclude>**/*.mapping</exclude>
                        <exclude>**/.*</exclude>
                        <exclude>**/.*/**</exclude>
                        <exclude>**/*.seed</exclude>
                        <exclude>**/*.iml</exclude>
                        <exclude>**/ansible.cfg</exclude>
                        <exclude>**/*.rpm</exclude>
                        <exclude>site/**</exclude>
                        <exclude>**/src/main/resources/patterns/**</exclude>
                        <exclude>**/src/test/resources/patterns/**</exclude>
                        <exclude>**/src/main/sample/patterns/**</exclude>
                        <exclude>**/src/test/resources/**</exclude>
                        <exclude>**/src/main/sample/data/**</exclude>
                        <exclude>**/dependency-reduced-pom.xml</exclude>
                        <exclude>**/target/**</exclude>
                        <!-- Files from Chef/bento -->
                        <exclude>**/packer-build/scripts/**</exclude>
                        <exclude>**/packer-build/bin/**</exclude>
                        <!-- Packer/Bento non-source directory -->
                        <exclude>**/packer_cache/**</exclude>
                        <exclude>**/hbase/data/**</exclude>
                        <exclude>**/kafkazk/data/**</exclude>
                        <exclude>**/wait-for-it.sh</exclude>
                        <exclude>**/*.out</exclude>
                        <!-- Directory containing dependencies downloaded by NPM -->
                        <exclude>node_modules/**</exclude>
                        <!-- Nodejs installed locally by the frontend-maven-plugin -->
                        <exclude>node/**</exclude>
                        <!-- Javascript code coverage report generated by Istanbul -->
                        <exclude>coverage/**</exclude>
                        <!-- ACE editor assets are covered in the metron-config NOTICE file -->
                        <exclude>**/src/assets/ace/**</exclude>
                        <exclude>dist/assets/ace/**</exclude>
                        <!-- Generated svg and bundle.css containing Font Awesome fonts are covered in the
                             metron-interface/metron-config README and NOTICE files -->
                        <exclude>dist/*.svg</exclude>
                        <exclude>dist/styles.*.bundle.css</exclude>
                        <!-- 3rdpartylicenses.txt is an empty file carried along by imported libraries -->
                        <exclude>dist/3rdpartylicenses.txt</exclude>
                        <exclude>e2e/*.js.map</exclude>
                        <!-- Checkstyle is LGPL.  We derive ours from their base, but don't ship it, so it's fine use.
                             Since it is derived, we shouldn't get an Apache header -->
                        <exclude>checkstyle.xml</exclude>
                        <!-- Alerts UI e2e test data -->
                        <exclude>e2e/mock-data/alerts_ui_e2e_index.data</exclude>
			<!-- retry files generated by Ansible during a failure -->
			<exclude>**/*.retry</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>1.4.1</version>
                <executions>
                    <execution>
                        <id>enforce-versions</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>${global_maven_version}</version>
                                </requireMavenVersion>
                                <requireJavaVersion>
                                    <version>${global_java_version}</version>
                                </requireJavaVersion>
                            </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>${global_checkstyle_version}</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <configLocation>checkstyle.xml</configLocation>
                    <excludes>**/generated/**/*</excludes>
                    <logViolationsToConsole>false</logViolationsToConsole>
                </configuration>
                <executions>
                    <execution>
                        <id>verify</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <distributionManagement>
        <site>
            <id>metron</id>
            <name>Metron</name>
            <url>file:///tmp/metron/site/</url>
        </site>
    </distributionManagement>
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>2.3</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.10.4</version>
                <configuration>
                    <additionalparam>-Xdoclint:none</additionalparam>
                </configuration>
                <reportSets>
                    <reportSet>
                        <id>default</id>
                        <reports>
                            <report>javadoc</report>
                            <report>test-javadoc</report>
                        </reports>
                    </reportSet>
                    <reportSet>
                        <id>aggregate</id>
                        <reports>
                            <report>aggregate</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.9</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <!-- Normally, dependency report takes time, skip it -->
                            <!--<report>dependencies</report>-->
                            <report>index</report>
                            <report>cim</report>
                            <report>issue-tracking</report>
                            <report>license</report>
                            <report>mailing-list</report>
                            <report>plugins</report>
                            <report>project-team</report>
                            <report>scm</report>
                            <report>summary</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.17</version>
                <configuration>
                    <configLocation>checkstyle.xml</configLocation>
                    <excludes>**/generated/**/*</excludes>
                </configuration>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>checkstyle</report>
                            <report>checkstyle-aggregate</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.9</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <!-- select non-aggregate reports -->
                            <report>report</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.7</version>
                <configuration>
                    <targetJdk>${global_java_version}</targetJdk>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
</project>
