<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">


	<parent>
		<groupId>org.eclipse.gemini.naming</groupId>
		<artifactId>org.eclipse.gemini.naming.parent</artifactId>
		<version>1.0.5.RELEASE</version>
	</parent>

	<modelVersion>4.0.0</modelVersion>
	<groupId>org.eclipse.gemini.naming</groupId>
	<artifactId>gemini-naming-integration-testing</artifactId>

	<packaging>jar</packaging>
	<name>Integration Tests for Gemini Naming</name>

	<dependencies>
		<dependency>     
			<groupId>org.eclipse</groupId>     
			<artifactId>osgi</artifactId>     
			<version>3.5.0.v20090520</version> 
		</dependency> 
            
		<dependency>
		    <groupId>org.slf4j</groupId>
		    <artifactId>com.springsource.slf4j.api</artifactId>
		    <version>1.5.0</version>
		</dependency>

		<dependency>
		    <groupId>org.slf4j</groupId>
		    <artifactId>com.springsource.slf4j.org.apache.commons.logging</artifactId>
		    <version>1.5.0</version>
		</dependency>

		            
           <dependency>
		    <groupId>org.slf4j</groupId>
		    <artifactId>com.springsource.slf4j.log4j</artifactId>
		    <version>1.5.0</version>
		</dependency>
      
	      <dependency>
			<groupId>org.osgi</groupId>
			<artifactId>osgi_R4_compendium</artifactId>
			<version>1.0</version>
			<type>jar</type>
			<scope>provided</scope>
		</dependency>

		<!-- Dependency on the Gemini Naming Bundle -->
		<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>org.eclipse.gemini.naming</artifactId>
			<version>${project.version}</version>
			<type>jar</type>
			<scope>provided</scope>
		</dependency>

		<!--
			dependency on the Spring OSGi Test Framework for integration testing
		-->
		
 		<dependency>     
			<groupId>org.springframework.osgi</groupId>     
			<artifactId>spring-osgi-test</artifactId>     
			<version>1.2.1</version>     
		</dependency>

		<!--
			The following dependencies seem to be required by the Spring OSGi
			Test Framework
		-->
		<dependency>
    		<groupId>org.apache.log4j</groupId>
    		<artifactId>com.springsource.org.apache.log4j</artifactId>
    		<version>1.2.15</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.osgi</groupId>
			<artifactId>spring-osgi-annotation</artifactId>
			<version>1.2.1</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.osgi</groupId>
			<artifactId>spring-osgi-extender</artifactId>
			<version>1.2.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>com.springsource.org.apache.commons.logging</artifactId>
			<version>1.1.1</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.objectweb.asm</groupId>
			<artifactId>com.springsource.org.objectweb.asm</artifactId>
			<version>2.2.3</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
</project>

