<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>1.0.2</version>
    <relativePath>../../pom/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <packaging>bundle</packaging>
  <groupId>org.apache.felix</groupId>
  <name>Apache Felix UPnP Base Driver</name>
  <artifactId>org.apache.felix.upnp.basedriver</artifactId>
  <version>0.9.0-SNAPSHOT</version>
  <repositories>
    <!-- For snapshots (no release jars or non-apache jars)           -->
    <repository>
      <id>snap.domoware.isti.cnr.it</id>
      <name>Domoware Snapshot Repository</name>
      <url>http://domoware.isti.cnr.it/maven2-snap</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
    <!-- For release (no snapshots jars or non-apache jars)           -->
    <repository>
      <id>release.domoware.isti.cnr.it</id>
      <name>Domoware Release Repository</name>
      <url>http://domoware.isti.cnr.it/maven2</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
  <!-- <url>http://maven.apache.org</url> -->

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>1.4.0</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-Name>${pom.name}</Bundle-Name>
            <Bundle-Activator>
              org.apache.felix.upnp.basedriver.Activator
            </Bundle-Activator>
            <Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
            <Bundle-Author>
              <![CDATA[Matteo Demuru <demuru@apache.org>,Francesco Furfari <furfari@apache.org>,Stefano "Kismet" Lenzi <lenzi@apache.org>]]>
            </Bundle-Author>
            <Bundle-Description>
              A Bundle implementation of the UPnP Service
              Specification R4
            </Bundle-Description>
            <Bundle-SymbolicName>
              org.apache.felix.upnp.basedriver
            </Bundle-SymbolicName>
            <Export-Package>
              org.apache.felix.upnp.basedriver.controller;version=0.1.0,
              org.apache.felix.upnp.basedriver.util;version=0.3.0,
              org.apache.felix.upnp.basedriver.resources;version=0.3.0
            </Export-Package>
            <Import-Package>
              org.osgi.*, javax.xml.parsers, org.w3c.dom, org.xml.sax
            </Import-Package>
            <Private-Package>
              org.apache.felix.upnp.basedriver.*;-split-package:=merge-first,
              org.cybergarage.*,
              org.apache.xerces.impl.dv.util
            </Private-Package>
          </instructions>
	  <excludeDependencies>upnp-stack-jdk13</excludeDependencies>
        </configuration>
	<executions>
	  <execution>
	    <id>jdk13</id>
	    <goals><goal>bundle</goal></goals>
	    <configuration>
	      <classifier>jdk13</classifier>
              <manifestLocation>${project.build.outputDirectory}/META-INF-jdk13</manifestLocation>
              <excludeDependencies>upnp-stack</excludeDependencies>
              <instructions>
                <Export-Package>
                  org.apache.felix.upnp.basedriver.controller;version=0.1.0,
                  org.apache.felix.upnp.basedriver.util;version=0.3.0,
                  org.apache.felix.upnp.basedriver.resources;version=0.3.0
                </Export-Package>
                <Import-Package>
                  org.osgi.*
                </Import-Package>
                <Private-Package>
                  org.apache.felix.upnp.basedriver.*;-split-package:=merge-first,
                  org.cybergarage.*,
                  org.kxml2.io, org.xmlpull.v1,
                  org.apache.xerces.impl.dv.util
                </Private-Package>
              </instructions>
	    </configuration>
	  </execution>
	</executions>
      </plugin>      
    </plugins>
  </build>


  <dependencies>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>1.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${pom.groupId}</groupId>
      <artifactId>org.osgi.compendium</artifactId>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>it.cnr.isti.domoware.cyberdomo</groupId>
      <artifactId>upnp-stack</artifactId>
      <version>1.8.0</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>it.cnr.isti.domoware.cyberdomo</groupId>
      <artifactId>upnp-stack-jdk13</artifactId>
      <version>1.8.0</version>
      <optional>true</optional>
    </dependency>
  </dependencies>
</project>