<!-- ! 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>pregelix-dataflow-std-base</artifactId>
	<packaging>jar</packaging>
	<name>pregelix-dataflow-std-base</name>

	<parent>
		<groupId>edu.uci.ics.hyracks</groupId>
		<artifactId>pregelix</artifactId>
		<version>0.2.11-SNAPSHOT</version>
	</parent>


	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<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>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-clean-plugin</artifactId>
				<version>2.4.1</version>
				<configuration>
					<filesets>
						<fileset>
							<directory>.</directory>
							<includes>
								<include>teststore*</include>
								<include>edu*</include>
								<include>actual*</include>
								<include>build*</include>
								<include>expect*</include>
								<include>ClusterController*</include>
							</includes>
						</fileset>
					</filesets>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<dependencies>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>hyracks-dataflow-common</artifactId>
			<version>0.2.11-SNAPSHOT</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>hyracks-hdfs-core</artifactId>
			<version>0.2.11-SNAPSHOT</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>hyracks-storage-am-common</artifactId>
			<version>0.2.11-SNAPSHOT</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>
		<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>
</project>
