<?xml version="1.0" encoding="UTF-8"?>
  <!--
    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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.felix</groupId>
		<artifactId>dependencymanager-reactor</artifactId>
		<version>3.0.0-SNAPSHOT</version>
	</parent>

	<name>Apache Felix Dependency Manager Integration Tests</name>
	<artifactId>org.apache.felix.dependencymanager.test</artifactId>

	<dependencies>
		<dependency>
			<groupId>${pom.groupId}</groupId>
			<artifactId>org.apache.felix.dependencymanager</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>${pom.groupId}</groupId>
			<artifactId>org.apache.felix.dependencymanager.annotation</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>${pom.groupId}</groupId>
			<artifactId>org.apache.felix.dependencymanager.runtime</artifactId>
			<scope>provided</scope>
		</dependency>
		
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.compendium</artifactId>
		</dependency>
		
		<dependency>
			<groupId>biz.aQute</groupId>
			<artifactId>bnd</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.ops4j.pax.exam</groupId>
			<artifactId>pax-exam</artifactId>
		</dependency>
		<dependency>
			<groupId>org.ops4j.pax.exam</groupId>
			<artifactId>pax-exam-container-default</artifactId>
		</dependency>
		<dependency>
			<groupId>org.ops4j.pax.exam</groupId>
			<artifactId>pax-exam-junit</artifactId>
		</dependency>
		
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.5</source>
					<target>1.5</target>
					<useDefaultManifestFile>false</useDefaultManifestFile>
					<compilerArgument>-g</compilerArgument>
					<compilerVersion>1.5</compilerVersion>
				</configuration>
				<executions>
					<execution>
						<id>default-testCompile</id>
						<configuration>
							<source>1.5</source>
							<target>1.5</target>
						</configuration>
					</execution>
				</executions>
			</plugin>
			
			<plugin>
				<groupId>org.ops4j.pax.exam</groupId>
				<artifactId>maven-paxexam-plugin</artifactId>
				<executions>
					<execution>
						<id>generate-config</id>
						<goals>
							<goal>generate-depends-file</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
