<?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/maven-v4_0_0.xsd">

	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.flink</groupId>
		<artifactId>flink-parent</artifactId>
		<version>0.6-incubating-SNAPSHOT</version>
		<relativePath>..</relativePath>
	</parent>

	<artifactId>flink-runtime</artifactId>
	<name>flink-runtime</name>

	<packaging>jar</packaging>

	<dependencies>
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-core</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>commons-cli</groupId>
			<artifactId>commons-cli</artifactId>
			<version>1.2</version>
		</dependency>
		
		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-server</artifactId>
			<!-- version is derived from base module -->
		</dependency>

		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-security</artifactId>
			<!-- version is derived from base module -->
		</dependency>

		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-servlet</artifactId>
			<!-- version is derived from base module -->
		</dependency>

		<dependency>
			<groupId>com.amazonaws</groupId>
			<artifactId>aws-java-sdk</artifactId>
			<version>1.8.1</version>
		</dependency>

		<dependency>
			<groupId>io.netty</groupId>
			<artifactId>netty-all</artifactId>
			<version>4.0.21.Final</version>
		</dependency>
		
		<dependency>
			<groupId>org.codehaus.jettison</groupId>
			<artifactId>jettison</artifactId>
			<version>1.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-java</artifactId>
			<version>${project.version}</version>
			<scope>test</scope>
		</dependency>
		
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<!-- <workingDirectory>${project.build.testOutputDirectory}</workingDirectory> -->
					<excludes>
						<exclude>**/TestData.java</exclude>
						<exclude>**/TestInstanceListener.java</exclude>
					</excludes>
					<forkMode>once</forkMode>
					<argLine>-Xms512m -Xmx1024m</argLine>
					<systemPropertyVariables>
						<log.level>WARN</log.level>
					</systemPropertyVariables>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>**/TestData.java</exclude>
					</excludes>
					<forkMode>once</forkMode>
					<argLine>-Xms512m -Xmx1024m</argLine>
					<systemPropertyVariables>
						<log.level>WARN</log.level>
					</systemPropertyVariables>
				</configuration>
			</plugin>
			<plugin>
				<!-- Description: https://github.com/ktoso/maven-git-commit-id-plugin
					Used to show the git ref when starting the jobmanager. -->
				<groupId>pl.project13.maven</groupId>
				<artifactId>git-commit-id-plugin</artifactId>
				<version>2.1.5</version>
				<executions>
					<execution>
						<goals>
							<goal>revision</goal>
						 </goals>
					</execution>
				</executions>
				<configuration>
					<dotGitDirectory>${project.basedir}/../../.git</dotGitDirectory>
					<generateGitPropertiesFile>true</generateGitPropertiesFile>
					<skipPoms>false</skipPoms>
					<failOnNoGitDirectory>false</failOnNoGitDirectory>
					<generateGitPropertiesFilename>src/main/resources/.version.properties</generateGitPropertiesFilename>
					<gitDescribe>
						<!-- don't generate the describe property -->
						<skip>true</skip>
					</gitDescribe>
				</configuration>
			</plugin>
			<!-- Add version to jar http://stackoverflow.com/questions/2712970/how-to-get-maven-artifact-version-at-runtime
				-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<inherited>true</inherited>
				<configuration>
					<archive>
						<manifest>
							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
							<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
						</manifest>
					</archive>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<!-- See main pom.xml for explanation of profiles -->
	<profiles>
		<profile>
			<id>hadoop-1</id>
			<activation>
				<property>
					<!-- Please do not remove the 'hadoop1' comment. See ./tools/generate_specific_pom.sh -->
					<!--hadoop1--><name>!hadoop.profile</name>
				</property>
			</activation>
			<dependencies>
				<!-- "Old" Hadoop = MapReduce v1 -->
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-core</artifactId>
					<exclusions>
						<exclusion>
							<groupId>asm</groupId>
							<artifactId>asm</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
			</dependencies>
		</profile>
		<profile>
			<id>hadoop-2</id>
			<activation>
				<property>
					<!-- Please do not remove the 'hadoop1' comment. See ./tools/generate_specific_pom.sh -->
					<!--hadoop2--><name>hadoop.profile</name><value>2</value>
				</property>
			</activation>
			<dependencies>
				<!-- YARN -->
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-common</artifactId>
					<exclusions>
						<exclusion>
							<groupId>asm</groupId>
							<artifactId>asm</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-hdfs</artifactId>
					<exclusions>
						<exclusion>
							<groupId>asm</groupId>
							<artifactId>asm</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
			</dependencies>
		</profile>
	</profiles>
</project>
