<?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.5.0</version>
	</parent>
	<description>Stream analytics for Metron</description>
	<url>https://metron.apache.org/</url>
	<scm>
		<connection>scm:git:https://git-wip-us.apache.org/repos/asf/metron.git</connection>
		<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/metron.git</developerConnection>
		<tag>HEAD</tag>
		<url>https://git-wip-us.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-pcap-backend</module>
		<module>metron-data-management</module>
		<module>metron-pcap</module>
		<module>metron-integration-test</module>
		<module>metron-test-utilities</module>
		<module>metron-api</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>1.6.6</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.powermock</groupId>
			<artifactId>powermock-api-mockito</artifactId>
			<version>1.6.6</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>
