<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.apache.felix</groupId>
    <artifactId>felix</artifactId>
    <version>0.8.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <packaging>osgi-bundle</packaging>
  <groupId>org.apache.felix</groupId>
  <name>Apache Felix UPnP Extra </name>
  <artifactId>org.apache.felix.upnp.extra</artifactId>
  <version>0.1.0-SNAPSHOT</version>
  <!-- <url>http://maven.apache.org</url> -->
  <dependencies>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.compendium</artifactId>
      <version>4.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix.plugins</groupId>
        <artifactId>maven-osgi-plugin</artifactId>
        <!-- <version>${pom.version}</version> -->
        <extensions>true</extensions>
        <configuration>
          <osgiManifest>
            <bundleName>UPnPExtra</bundleName>
            <bundleVendor>Apache Software Foundation</bundleVendor>
            <bundleVersion>0.1.0</bundleVersion>
            <bundleDescription>
               	A library used to extend the integration between UPnP and OSGi that is not part of the standard. Also services that allow to change the beahviour of the UPnP Base Driver
            </bundleDescription>
            <bundleSymbolicName>org.apache.felix.upnp.extra</bundleSymbolicName>
            <importPackage>
			org.osgi.service.upnp;specification-version=1.1,org.apache.felix.upnp.extra.util;specification-version=1.0,org.apache.felix.upnp.extra.controller;specification-version=1.0
            </importPackage>
            <exportPackage>
               	org.apache.felix.upnp.extra.util;specification-version=1.0,org.apache.felix.upnp.extra.controller;specification-version=1.0
            </exportPackage>
          </osgiManifest>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
