<!-- ! 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>
	<parent>
		<artifactId>asterix</artifactId>
		<groupId>edu.uci.ics.asterix</groupId>
		<version>0.8.1-SNAPSHOT</version>
	</parent>
	<artifactId>asterix-common</artifactId>
	<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.jvnet.jaxb2.maven2</groupId>
				<artifactId>maven-jaxb2-plugin</artifactId>
				<executions>
					<execution>
						<id>configuration</id>
						<goals>
							<goal>generate</goal>
						</goals>
						<configuration>
							<args>
								<arg>-Xsetters</arg>
								<arg>-Xvalue-constructor</arg>
							</args>
							<plugins>
								<plugin>
									<groupId>org.jvnet.jaxb2_commons</groupId>
									<artifactId>jaxb2-basics</artifactId>
									<version>0.6.2</version>
								</plugin>
								<plugin>
									<groupId>org.jvnet.jaxb2_commons</groupId>
									<artifactId>jaxb2-value-constructor</artifactId>
									<version>3.0</version>
								</plugin>
							</plugins>
							<schemaDirectory>src/main/resources/schema</schemaDirectory>
							<schemaIncludes>
								<include>asterix-conf.xsd</include>
							</schemaIncludes>
							<generatePackage>edu.uci.ics.asterix.common.configuration</generatePackage>
							<bindingDirectory>src/main/resources/schema</bindingDirectory>
							<bindingIncludes>
								<bindingInclude>jaxb-bindings.xjb</bindingInclude>
							</bindingIncludes>
							<generateDirectory>${project.build.directory}/generated-sources/configuration</generateDirectory>
						</configuration>
					</execution>
					<execution>
						<id>cluster</id>
						<goals>
							<goal>generate</goal>
						</goals>
						<configuration>
							<args>
								<arg>-Xsetters</arg>
								<arg>-Xvalue-constructor</arg>
							</args>
							<plugins>
								<plugin>
									<groupId>org.jvnet.jaxb2_commons</groupId>
									<artifactId>jaxb2-basics</artifactId>
									<version>0.6.2</version>
								</plugin>
								<plugin>
									<groupId>org.jvnet.jaxb2_commons</groupId>
									<artifactId>jaxb2-value-constructor</artifactId>
									<version>3.0</version>
								</plugin>
							</plugins>
							<schemaDirectory>src/main/resources/schema</schemaDirectory>
							<schemaIncludes>
								<include>cluster.xsd</include>
							</schemaIncludes>
							<generatePackage>edu.uci.ics.asterix.event.schema.cluster</generatePackage>
							<generateDirectory>${project.build.directory}/generated-sources/cluster</generateDirectory>
							<bindingDirectory>src/main/resources/schema</bindingDirectory>
							<bindingIncludes>
								<bindingInclude>jaxb-bindings.xjb</bindingInclude>
							</bindingIncludes>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<includes>
						<include>**/*.class</include>
					</includes>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>test-jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

	<dependencies>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>1.4</version>
		</dependency>
		<dependency>
			<groupId>commons-httpclient</groupId>
			<artifactId>commons-httpclient</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>algebricks-compiler</artifactId>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>hyracks-dataflow-std</artifactId>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>1.4</version>
		</dependency>
		<dependency>
			<groupId>commons-httpclient</groupId>
			<artifactId>commons-httpclient</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>hyracks-storage-am-lsm-common</artifactId>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>hyracks-storage-am-common</artifactId>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>hyracks-api</artifactId>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.asterix</groupId>
			<artifactId>asterix-test-framework</artifactId>
			<version>0.8.1-SNAPSHOT</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>hyracks-storage-am-lsm-btree</artifactId>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>
				hyracks-storage-am-lsm-invertedindex
			</artifactId>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.hyracks</groupId>
			<artifactId>hyracks-storage-am-lsm-rtree</artifactId>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.12</version>
		</dependency>
	</dependencies>

</project>

