<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-parent</artifactId>
    <version>1.2.0</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>

  <profiles>
    <profile>
      <id>cyberlink</id>
      <activation>
      	<property>
	  <name>cyberlink</name><value>true</value>
	</property>	
      </activation>

      <repositories>
        <repository>
          <id>release.cgupnpjava.sourceforge.net</id>
          <name>CyberLink for Java Repository</name>
          <url>http://cgupnpjava.sourceforge.net/repository/</url>
          <snapshots><enabled>false</enabled></snapshots>
        </repository>
        <repository>
          <id>snapshot.cgupnpjava.sourceforge.net</id>
          <name>CyberLink for Java Development Repository</name>
          <url>http://cgupnpjava.sourceforge.net/snapshots-repository/</url>
          <releases><enabled>false</enabled></releases>
        </repository>
      </repositories>

      <build>
        <plugins>
	  <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <executions>
              <execution>
                <id>cyberlink</id>
                <goals><goal>bundle</goal></goals>
                <configuration>
                  <classifier>cyberlink</classifier>
                  <manifestLocation>${project.build.outputDirectory}/META-INF-cyberlink</manifestLocation>
                  <excludeDependencies>it.cnr.isti.domoware.cyberdomo:upnp-stack,it.cnr.isti.domoware.cyberdomo:upnp-stack-jdk13</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.*, javax.xml.parsers, org.w3c.dom, org.xml.sax,
		      !org.kxml2.io, !org.xmlpull.v1, !org.apache.xerces.parsers
                    </Import-Package>
                    <Private-Package>
                      org.apache.felix.upnp.basedriver.*;-split-package:=merge-first,
                      org.cybergarage.*,
                      org.apache.xerces.impl.dv.util
                    </Private-Package>
                  </instructions>
                </configuration>
              </execution>
            </executions>
	  </plugin>
	</plugins>
      </build>
      
      <dependencies>
        <dependency>
          <groupId>org.cybergarage.cyberlink</groupId>
          <artifactId>upnp-stack</artifactId>
          <version>1.8.0-SNAPSHOT</version>
          <optional>true</optional>
	  <exclusions>
	    <exclusion>
              <groupId>xerces</groupId>
              <artifactId>xercesImpl</artifactId>
	    </exclusion>
	  </exclusions>
	</dependency>
      </dependencies>

    </profile>
  </profiles>
  
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
	  <excludeDependencies>org.cybergarage.cyberlink:upnp-stack,upnp-stack-jdk13</excludeDependencies>
          <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>
        </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>      
      <!--plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>minijar-maven-plugin</artifactId>
        <version>1.0-alpha-3</version>
	<executions>
	  <execution>
	    <id>ueberjar</id>
	    <phase>package</phase>
	    <goals><goal>ueberjar</goal></goals>
            <configuration>
	      <stripUnusedClasses>true</stripUnusedClasses>
	      <includeDependencies>
	        <param>none:dependency</param>
	      </includeDependencies>
            </configuration>
	  </execution>
	</executions>
      </plugin-->
    </plugins>
  </build>


  <dependencies>
    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>1.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.felix</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>
