<?xml version="1.0" encoding="UTF-8" ?>
<!-- 
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License. 
-->
<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>org.apache.felix.commons</groupId>
        <artifactId>commons-build</artifactId>
        <version>1.0.1-SNAPSHOT</version>
        <relativePath>../pom</relativePath>
    </parent>
    <properties>
        <pkgArtifactId>dom4j</pkgArtifactId>
        <pkgVersion>1.6.1</pkgVersion>
        <pomVersion>0001</pomVersion>
        <osgiVersion>${pkgVersion}</osgiVersion>
    </properties>
    <groupId>org.apache.felix.commons</groupId>
    <artifactId>${pom.groupId}.${pkgArtifactId}</artifactId>
    <version>${osgiVersion}-${pomVersion}-SNAPSHOT</version>
    <packaging>bundle</packaging>
    <name>${pkgArtifactId} bundle</name>
    <description>
        This bundle simply wraps ${pkgArtifactId}-${pkgVersion}.jar.
    </description>
    <organization>
        <name>Apache Felix Project</name>
        <url>http://felix.apache.org/</url>
    </organization>
    <scm>
      <connection>scm:svn:http://svn.apache.org/repos/asf/felix/trunk/commons/dom4j</connection>
      <developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/trunk/commons/dom4j</developerConnection>
      <url>http://svn.apache.org/viewcvs/felix/trunk/commons/dom4j</url>
    </scm>

    <dependencies>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>${pkgArtifactId}</artifactId>
            <version>${pkgVersion}</version>
            <exclusions>
                <exclusion>
                    <groupId>xml-apis</groupId>
                    <artifactId>xml-apis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>
                            ${pom.artifactId}
                        </Bundle-SymbolicName>
                        <Export-Package>
                            *;version=${pkgVersion}
                        </Export-Package>
                        <Import-Package>
                            com.sun.msv.*;resolution:=optional,
                            javax.xml.bind.*;resolution:=optional,
                            javax.xml.stream.*;resolution:=optional,
                            javax.xml.namespace.*;resolution:=optional,
                            javax.xml.stream.*;resolution:=optional,
                            org.gjt.xpp.*;resolution:=optional,
                            org.jaxen.*;resolution:=optional,
                            org.relaxng.datatype.*;resolution:=optional,
                            org.xmlpull.v1.*;resolution:=optional, *
                        </Import-Package>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
