<project>
  <parent>
    <groupId>org.apache.felix</groupId>
    <artifactId>felix</artifactId>
    <version>0.8.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <packaging>osgi-bundle</packaging>
  <name>Apache Felix Examples: Dictionary Service Integration Test</name>
  <artifactId>org.apache.felix.examples.dictionaryservice.itest</artifactId>
  <dependencies>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>${pom.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.apache.felix.examples.dictionaryservice</artifactId>
      <version>${pom.version}</version>
      <scope>provided</scope>
    </dependency>

    <!-- Added to test exclusions: its not a bundle so we want to exclude it -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>provided</scope>
    </dependency>
    
  </dependencies>
  <build>
    <plugins>
    
      <plugin>
        <groupId>org.apache.felix.plugins</groupId>
        <artifactId>maven-felix-plugin</artifactId>
        <executions>
          <execution>
             <id>run</id>
             <configuration>
               <felixCacheDir>${basedir}/target/.felix</felixCacheDir>
               <exclusions>
                 <exclusion>junit:junit</exclusion>
               </exclusions>
             </configuration>
             <goals>
               <goal>run</goal>
             </goals>
          </execution>
        </executions>
      </plugin>
    
      <plugin>
        <groupId>org.apache.felix.plugins</groupId>
        <artifactId>maven-osgi-plugin</artifactId>
        <version>${pom.version}</version>
        <extensions>true</extensions>
        <configuration>
          <osgiManifest>
            <bundleName>Dictionary Integration Test Example</bundleName>
            <bundleVendor>Apache Software Foundation</bundleVendor>
            <bundleDescription>
              A bundle using the dictionary service to test it.
            </bundleDescription>
            <bundleActivator>
              org.apache.felix.examples.dictionaryservice.itest.Activator
            </bundleActivator>
            <importPackage>
              org.osgi.framework, org.apache.felix.examples.dictionaryservice
            </importPackage>
          </osgiManifest>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
