<!-- ! 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</version>
	</parent>
	<artifactId>asterix-installer</artifactId>
	<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>
				</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>installer-conf.xsd</include>
							</schemaIncludes>
							<generatePackage>edu.uci.ics.asterix.installer.schema.conf</generatePackage>
							<generateDirectory>${project.build.directory}/generated-sources/configuration</generateDirectory>
						</configuration>
					</execution>
					<execution>
						<id>cluster</id>
						<goals>
							<goal>generate</goal>
						</goals>
						<configuration>
							<schemaDirectory>src/main/resources/schema</schemaDirectory>
							<schemaIncludes>
								<include>cluster.xsd</include>
							</schemaIncludes>
							<generatePackage>edu.uci.ics.asterix.installer.schema.cluster</generatePackage>
							<bindingDirectory>src/main/resources/schema</bindingDirectory>
							<bindingIncludes>
								<bindingInclude>jaxb-bindings.xjb</bindingInclude>
							</bindingIncludes>
							<generateDirectory>${project.build.directory}/generated-sources/cluster</generateDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.2-beta-5</version>
				<executions>
					<execution>
						<configuration>
							<descriptor>src/main/assembly/binary-assembly.xml</descriptor>
						</configuration>
						<phase>package</phase>
						<goals>
							<goal>attached</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<version>2.6</version>
				<configuration>
					<runOrder>alphabetical</runOrder>
					<forkMode>pertest</forkMode>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>integration-test</goal>
							<goal>verify</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>args4j</groupId>
			<artifactId>args4j</artifactId>
			<version>2.0.12</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.5</version>
			<exclusions>
				<exclusion>
					<groupId>com.sun.jmx</groupId>
					<artifactId>jmxri</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jdmk</groupId>
					<artifactId>jmxtools</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.jms</groupId>
					<artifactId>jms</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>1.4</version>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.asterix</groupId>
			<artifactId>asterix-events</artifactId>
			<version>0.8.1</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.asterix</groupId>
			<artifactId>asterix-common</artifactId>
			<version>0.8.1</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.asterix</groupId>
			<artifactId>asterix-server</artifactId>
			<version>0.8.1</version>
			<type>zip</type>
			<classifier>binary-assembly</classifier>
		</dependency>
		<dependency>
			<groupId>edu.uci.ics.asterix</groupId>
			<artifactId>asterix-test-framework</artifactId>
			<version>0.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
