<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.slf4j</groupId>
		<artifactId>slf4j-parent</artifactId>
		<version>1.5.6</version>
	</parent>
	
	<modelVersion>4.0.0</modelVersion>
	
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-osgi-test-bundle</artifactId>
	<packaging>bundle</packaging>
	<name>SLF4J Testing Bundle</name>
	
	<url>http://www.slf4j.org</url>
	<description>
		The slf4j OSGi testing bundle.
	</description>

	<dependencies>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-nop</artifactId>
			<version>${project.version}</version>
			<scope>provided</scope>
		</dependency>
		
		<!-- To get org.apache.commons.logging package for
		 commons logging testing.-->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${project.version}</version>
			<scope>provided</scope>
		</dependency>
		
		<dependency>
      		<groupId>org.apache.felix</groupId>
      		<artifactId>org.osgi.core</artifactId>
      		<version>0.8.0-SNAPSHOT</version>
      		<scope>provided</scope>
    	</dependency>
	</dependencies>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<version>0.9.0-incubator-SNAPSHOT</version>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Export-Package>
							org.slf4j.osgi.test.service
						</Export-Package>
						<Private-Package>org.slf4j.osgi.test</Private-Package>
						<Import-Package>
							org.osgi.framework,org.slf4j;version="[1.3,1.4)"
						</Import-Package>
						<Bundle-Activator>org.slf4j.osgi.test.Activator</Bundle-Activator>
						<DynamicImport-Package>org.apache.commons.logging</DynamicImport-Package>
					</instructions>
				</configuration>
			</plugin>
		</plugins>
	</build>
	
</project>