<?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.5.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>

    <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.1.0</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>5.2.1</global_solr_version>
        <global_mockito_version>1.10.19</global_mockito_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.1.0</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.12</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/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.a0b6b99c10d9a13dc67e.bundle.css</exclude>
                        <exclude>dist/styles.f56deed131e58bd7ee04.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>
