<?xml version="1.0"?>
<!--
 ! Copyright 2009-2013 by The Regents of the University of California
 ! Licensed 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 from
 ! 
 !     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>
	<artifactId>hyracks-hdfs-0.23.1</artifactId>
	<name>hyracks-hdfs-0.23.1</name>
	<parent>
		<artifactId>hyracks-hdfs</artifactId>
		<groupId>edu.uci.ics.hyracks</groupId>
		<version>0.2.11-SNAPSHOT</version>
	</parent>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.0.2</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<fork>true</fork>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<activation>
				<activeByDefault>true</activeByDefault>
				<property>
					<name>hadoop</name>
					<value>0.23.1</value>
				</property>
			</activation>
			<id>hadoop-0.23.1</id>
			<dependencies>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-common</artifactId>
					<version>0.23.1</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-mapreduce-client-core</artifactId>
					<version>0.23.1</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-hdfs</artifactId>
					<version>0.23.1</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-minicluster</artifactId>
					<version>0.23.1</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
			</dependencies>
		</profile>
		<profile>
			<id>hadoop-0.23.6</id>
			<activation>
				<activeByDefault>false</activeByDefault>
				<property>
					<name>hadoop</name>
					<value>0.23.6</value>
				</property>
			</activation>
			<dependencies>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-common</artifactId>
					<version>0.23.6</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-mapreduce-client-core</artifactId>
					<version>0.23.6</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-hdfs</artifactId>
					<version>0.23.6</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-minicluster</artifactId>
					<version>0.23.6</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
			</dependencies>
		</profile>
		<profile>
			<activation>
				<activeByDefault>false</activeByDefault>
				<property>
					<name>hadoop</name>
					<value>cdh-4.2</value>
				</property>
			</activation>
			<id>cdh-4.2</id>
			<dependencies>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-common</artifactId>
					<version>2.0.0-cdh4.2.0</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-mapreduce-client-core</artifactId>
					<version>2.0.0-cdh4.2.0</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-hdfs</artifactId>
					<version>2.0.0-cdh4.2.0</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-minicluster</artifactId>
					<version>2.0.0-cdh4.2.0</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
			</dependencies>
		</profile>
		<profile>
			<activation>
				<activeByDefault>false</activeByDefault>
				<property>
					<name>hadoop</name>
					<value>cdh-4.1</value>
				</property>
			</activation>
			<id>cdh-4.1</id>
			<dependencies>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-common</artifactId>
					<version>2.0.0-cdh4.1.0</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-mapreduce-client-core</artifactId>
					<version>2.0.0-cdh4.1.0</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-hdfs</artifactId>
					<version>2.0.0-cdh4.1.0</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.hadoop</groupId>
					<artifactId>hadoop-minicluster</artifactId>
					<version>2.0.0-cdh4.1.0</version>
					<type>jar</type>
					<scope>compile</scope>
				</dependency>
			</dependencies>
		</profile>
	</profiles>

	<dependencies>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>hyracks-api</artifactId>
			<version>0.2.11-SNAPSHOT</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>
	</dependencies>

	<repositories>
		<repository>
			<id>cloudera</id>
			<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
		</repository>
	</repositories>
</project>
