<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.6.0-alpha2</version>
	</parent>
	
	<modelVersion>4.0.0</modelVersion>
	
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-osgi-integration-test</artifactId>
	<packaging>jar</packaging>
	<name>SLF4J OSGi Integration Test</name>
	
	<url>http://www.slf4j.org</url>
	<description>
        OSGi integration tests for the slf4j. 
        </description>
    <!-- These dependencies are deceptive they are only for the springframework testing env.  
    bundles being tested are specified in the  -->

    <dependencies>
    	<dependency>
    		<groupId>org.apache.felix</groupId>
    		<artifactId>javax.servlet</artifactId>
    		<version>0.8.0-SNAPSHOT</version>
    		<scope>test</scope>
    	</dependency>

    	<dependency>
    		<groupId>org.osgi</groupId>
    		<artifactId>org.osgi.compendium</artifactId>
    		<version>4.0</version>
    		<scope>provided</scope>
    	</dependency>

    	<dependency>
    		<groupId>junit</groupId>
    		<artifactId>junit</artifactId>
    		<version>3.8.1</version>
    		<scope>test</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.slf4j</groupId>
    		<artifactId>slf4j-osgi-test-bundle</artifactId>
    		<version>${parent.version}</version>
    		<scope>test</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.osgi</groupId>
    		<artifactId>org.springframework.osgi.test</artifactId>
    		<version>1.0-SNAPSHOT</version>
    		<scope>provided</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.osgi</groupId>
    		<artifactId>spring-core</artifactId>
    		<version>2.1-SNAPSHOT</version>
    		<scope>provided</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.osgi</groupId>
    		<artifactId>spring-context</artifactId>
    		<version>2.1-SNAPSHOT</version>
    		<scope>provided</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.osgi</groupId>
    		<artifactId>spring-beans</artifactId>
    		<version>2.1-SNAPSHOT</version>
    		<scope>provided</scope>
    	</dependency>


    	<dependency>
    		<groupId>org.springframework.osgi</groupId>
    		<artifactId>spring-mock</artifactId>
    		<version>2.1-SNAPSHOT</version>
    		<type>jar</type>
    		<scope>test</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.osgi</groupId>
    		<artifactId>jcl104-over-slf4j.osgi</artifactId>
    		<version>1.1.0</version>
    		<scope>provided</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.slf4j</groupId>
    		<artifactId>slf4j-log4j-full</artifactId>
    		<version>1.1.0</version>
    		<scope>provided</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.osgi</groupId>
    		<artifactId>log4j.osgi</artifactId>
    		<version>1.2.13-SNAPSHOT</version>
    		<scope>test</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.osgi</groupId>
    		<artifactId>backport-util-concurrent</artifactId>
    		<version>3.0-SNAPSHOT</version>
    		<scope>test</scope>
    	</dependency>
    </dependencies>


    <build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.5</source>
					<target>1.5</target>
				</configuration>
			</plugin>
      <!-- run tests during the integration-test phase, not the normal test phase -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skip>true</skip>
					<systemProperties>
            			<property>
              				<name>org.springframework.osgi.test.framework</name>
              				<value>${osgi.test.platform}</value>
            			</property>
            			<property>
              				<name>org.osgi.framework.system.packages</name>
              				<value>${osgi.test.system.packages}</value>
            			</property>
            			<!--
            			<property>
              				<name>org.osgi.vendor.framework</name>
              				<value>${org.osgi.vendor.framework}</value>
            			</property>
            			-->
          			</systemProperties>
				</configuration>
				<executions>
					<execution>
						<id>default</id>
						<phase>test</phase>
						<goals></goals>
					</execution>
					<execution>
						<id>integration-test</id>
						<phase>integration-test</phase>
						<goals>
							<goal>test</goal>
						</goals>
						<configuration>
							<skip>false</skip>
							<forkMode>pertest</forkMode>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
	<profiles>
		<profile>
			<id>equinox</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<dependencies>
				<dependency>
					<groupId>org.eclipse.equinox</groupId>
					<artifactId>org.eclipse.osgi</artifactId>
					<version>3.2.0</version>
					<type>jar</type>
					<scope>provided</scope>
				</dependency>
			</dependencies>
			<properties>
			    <osgi.test.system.packages>org.xml.sax, org.w3c.dom, javax.xml.parsers, javax.naming, javax.management</osgi.test.system.packages>
				<osgi.test.platform>equinox</osgi.test.platform>
			</properties>
		</profile>
		<profile>
			<id>knopflerfish</id>
			<dependencies>
				<dependency>
					<groupId>org.knopflerfish</groupId>
					<artifactId>framework</artifactId>
					<version>2.0.1</version>
					<type>jar</type>
					<scope>provided</scope>
				</dependency>
			</dependencies>
			<properties>
			    <!-- knopflerfish testing requires that the system property 
			org.osgi.framework.system.packages be set with a list 
			system packages that are to be imported on the kf classpath.
			This property is a placeholder for the list. See the surefire 
			plugin configuration systemProperties referenced above to see 
			the mapping to this element. -->
			    <osgi.test.system.packages>org.xml.sax, org.w3c.dom, javax.xml.parsers, javax.naming, javax.management</osgi.test.system.packages>
				<osgi.test.platform>knopflerfish</osgi.test.platform>
			</properties>
		</profile>
		<profile>
			<id>felix</id>
			<dependencies>
				<dependency>
					<groupId>org.apache.felix</groupId>
					<artifactId>org.apache.felix.framework</artifactId>
					<version>0.8.0-SNAPSHOT</version>
					<type>jar</type>
					<scope>provided</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.felix</groupId>
					<artifactId>org.apache.felix.main</artifactId>
					<version>0.8.0-SNAPSHOT</version>
					<type>jar</type>
					<scope>provided</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.felix</groupId>
					<artifactId>org.osgi.core</artifactId>
					<version>0.8.0-SNAPSHOT</version>
					<type>jar</type>
					<scope>runtime</scope>
				</dependency>
			</dependencies>
			<properties>
				<osgi.test.platform>felix</osgi.test.platform>
		<!-- <org.osgi.vendor.framework>org.apache.felix.framework</org.osgi.vendor.framework>  -->
			</properties>
		</profile>
	</profiles>
</project>