<?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-Streaming</artifactId>
	<version>0.1BETA</version>
	<packaging>pom</packaging>
	<name>Metron-Streaming</name>
	<description>Stream analytics for Metron</description>
  <url>https://metron.incubator.apache.org/</url>
  <scm>
    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-metron.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-metron.git</developerConnection>
    <tag>HEAD</tag>
    <url>https://git-wip-us.apache.org/repos/asf/incubator-metron</url>
  </scm>
	<properties>
		<twitter>@ApacheMetron</twitter>
		<global_opencsv_version>3.7</global_opencsv_version>
		<global_storm_version>0.10.0</global_storm_version>
		<global_flux_version>0.10.0</global_flux_version>
		<global_pcap_version>1.7.1</global_pcap_version>
		<global_kafka_version>0.8.2.2</global_kafka_version>
		<global_hadoop_version>2.7.1</global_hadoop_version>
		<global_hbase_version>1.1.1</global_hbase_version>
		<global_flume_version>1.5.2</global_flume_version>
		<global_elasticsearch_version>1.7.4</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.4</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>
	</properties>
	<licenses>
		<license>
			<name>The Apache Software License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>
	<developers>
		<developer>
			<id>jsirota</id>
			<name>James Sirota</name>
			<email>jsirota@cisco.com</email>
			<properties>
				<twitter>@JamesSirota</twitter>
				<blog>medium.com/@JamesSirota</blog>
			</properties>
		</developer>
	</developers>
	<modules>
		<module>Metron-Common</module>
		<module>Metron-EnrichmentAdapters</module>
		<module>Metron-MessageParsers</module>
		<module>Metron-Indexing</module>
		<module>Metron-Alerts</module>
		<module>Metron-DataLoads</module>
		<module>Metron-Topologies</module>
		<module>Metron-Pcap_Service</module>
		<module>Metron-Testing</module>
	</modules>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.17</version>
        <executions>
          <execution>
            <id>checkstyle</id>
            <phase>package</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <configLocation>style/checkstyle.xml</configLocation>
          <headerLocation>style/LICENSE</headerLocation>
          <failOnViolation>true</failOnViolation>
        </configuration>
      </plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.5.1</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</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.apache.rat</groupId>
				<artifactId>apache-rat-plugin</artifactId>
				<version>0.11</version>
				<configuration>
					<excludes>
						<exclude>**/README.md</exclude>
						<exclude>**/*.json</exclude>
						<exclude>**/*.log</exclude>
						<exclude>**/src/main/resources/patterns/**</exclude>
						<exclude>**/src/main/resources/SampleInput/**</exclude>
						<exclude>**/dependency-reduced-pom.xml</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.18</version>
        <configuration>
          <argLine>-Xmx2048m -XX:MaxPermSize=256m</argLine>
					<systemProperties>
						<property>
							<name>mode</name>
							<value>local</value>
						</property>
					</systemProperties>
				</configuration>
			</plugin>
			<!-- Normally, dependency report takes time, skip it -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-project-info-reports-plugin</artifactId>
				<version>2.7</version>
				<configuration>
					<dependencyLocationsEnabled>false</dependencyLocationsEnabled>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-pmd-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<targetJdk>1.7</targetJdk>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>emma-maven-plugin</artifactId>
				<version>1.0-alpha-3</version>
				<inherited>true</inherited>
			</plugin>
		</plugins>
	</reporting>
	<repositories>
		<repository>
			<id>clojars.org</id>
			<url>http://clojars.org/repo</url>
		</repository>
	</repositories>
</project>
