<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>ipojo.tests</groupId>
  	<artifactId>ipojo.tests</artifactId>
  	<version>1.5.0-SNAPSHOT</version>
  </parent>

  <groupId>org.apache.felix</groupId>
  <artifactId>org.apache.felix.ipojo.online.manipulator.test</artifactId>
  <version>1.5.0-SNAPSHOT</version>
  <name>Online Manipulator Test</name>
  <packaging>jar</packaging>
    <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>
      <plugin>
        <groupId>org.apache.servicemix.tooling</groupId>
        <artifactId>depends-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
          <execution>
            <id>generate-depends-file</id>
            <goals>
              <goal>generate-depends-file</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
  	<dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
    </dependency>

  <!--
    Pax Exam API:
  -->
  <dependency>
    <groupId>org.ops4j.pax.exam</groupId>
    <artifactId>pax-exam</artifactId>
    <version>1.2.0</version>
  </dependency>
  <!--
    During runtime Pax Exam will discover the OSGi container to use by
    searching metadata available into classpath. Pax Exam comes with a
    default container that uses [Pax Runner] for implementing the
    container requirements:
  -->
  <dependency>
    <groupId>org.ops4j.pax.exam</groupId>
    <artifactId>pax-exam-container-default
    </artifactId>
    <version>1.2.0</version>
  </dependency>
  <!--
    If your test code is based on JUnit you will have to have the Junit
    support artifact:
  -->
	<dependency>
		<groupId>org.ops4j.pax.exam</groupId>
		<artifactId>pax-exam-junit</artifactId>
		<version>1.2.0</version>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.5</version>
		<type>jar</type>
		<scope>test</scope>
	</dependency>

	<dependency>
		<groupId>org.ops4j.pax.swissbox</groupId>
		<artifactId>pax-swissbox-tinybundles</artifactId>
		<version>1.2.0</version>
	</dependency>
	<dependency>
		<groupId>xerces</groupId>
		<artifactId>xercesImpl</artifactId>
		<version>2.4.0</version>
	</dependency>
	<dependency>
		<groupId>org.apache.felix</groupId>
		<artifactId>org.apache.felix.ipojo.annotations</artifactId>
	</dependency>
	<dependency>
		<groupId>org.apache.felix</groupId>
		<artifactId>org.apache.felix.ipojo</artifactId>
		<version>1.7.0-SNAPSHOT</version>
	</dependency>
	<dependency>
		<groupId>org.apache.felix</groupId>
		<artifactId>org.apache.felix.ipojo.online.manipulator</artifactId>
		<version>1.7.0-SNAPSHOT</version>
	</dependency>

  </dependencies>
</project>
