<!--
 ! 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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<artifactId>hyracks-storage-am-lsm-invertedindex-test</artifactId>

	<parent>
		<artifactId>hyracks-tests</artifactId>
		<groupId>org.apache.hyracks</groupId>
		<version>0.2.17-incubating</version>
		<relativePath>..</relativePath>
	</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>
				</configuration>
			</plugin>
			<plugin>
				 <groupId>org.apache.maven.plugins</groupId>
				 <artifactId>maven-deploy-plugin</artifactId>
				 <configuration>
					<skip>true</skip>
				 </configuration>
			</plugin>
		</plugins>
	</build>
	<properties>
			<root.dir>${basedir}/../../..</root.dir>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.apache.hyracks</groupId>
			<artifactId>hyracks-storage-am-lsm-invertedindex</artifactId>
			<version>0.2.17-incubating</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.hyracks</groupId>
			<artifactId>hyracks-test-support</artifactId>
			<version>0.2.17-incubating</version>
			<type>jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.hyracks</groupId>
			<artifactId>hyracks-data-std</artifactId>
			<version>0.2.17-incubating</version>
			<type>jar</type>
			<scope>test</scope>
		</dependency>
	</dependencies>

</project>
