<?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-platform</artifactId>
	<packaging>pom</packaging>
	<name>metron-platform</name>
	<parent>
		<groupId>org.apache.metron</groupId>
		<artifactId>Metron</artifactId>
		<version>0.7.0</version>
	</parent>
	<description>Stream analytics for Metron</description>
	<url>https://metron.apache.org/</url>
	<scm>
		<connection>scm:git:https://gitbox.apache.org/repos/asf/metron.git</connection>
		<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/metron.git</developerConnection>
		<tag>HEAD</tag>
		<url>https://gitbox.apache.org/repos/asf/metron</url>
	</scm>

	<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>
	<modules>
		<module>metron-hbase-client</module>
		<module>metron-common</module>
		<module>metron-enrichment</module>
		<module>metron-solr</module>
		<module>metron-parsers</module>
 		<module>metron-job</module>
		<module>metron-pcap-backend</module>
		<module>metron-data-management</module>
		<module>metron-pcap</module>
		<module>metron-integration-test</module>
		<module>metron-test-utilities</module>
		<module>metron-indexing</module>
		<module>metron-management</module>
		<module>metron-writer</module>
		<module>metron-hbase</module>
		<module>elasticsearch-shaded</module>
		<module>metron-elasticsearch</module>
		<module>metron-storm-kafka</module>
		<module>metron-storm-kafka-override</module>
		<module>metron-zookeeper</module>
	</modules>
	<dependencies>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${global_slf4j_version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${global_slf4j_version}</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${global_junit_version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.powermock</groupId>
			<artifactId>powermock-module-junit4</artifactId>
			<version>${global_powermock_version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.powermock</groupId>
			<artifactId>powermock-api-mockito</artifactId>
			<version>${global_powermock_version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.adrianwalker</groupId>
			<artifactId>multiline-string</artifactId>
			<version>0.1.2</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
