<?xml version="1.0" encoding="UTF-8"?>
<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">

    <!--

        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.
    -->

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.servicemix.ejb3.bundles</groupId>
        <artifactId>bundles</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>org.apache.servicemix.bundles</groupId>
    <artifactId>org.apache.servicemix.bundles.cxf-2.0.5</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>bundle</packaging>
    <name>ServiceMix OSGI Common Bundles: cxf</name>
    <description>
        This bundle simply wraps cxf ${pkgVersion}.
    </description>

    <properties>
        <pkgVersion>2.0.5.incubator</pkgVersion>
		<servicemix.osgi.export>
            org.apache.cxf*;version=${pkgVersion};-split-package:=merge-first,
            org.xmlsoap.schemas*;version=${pkgVersion};-split-package:=merge-first,
            '=META-INF.cxf'
        </servicemix.osgi.export>
        <servicemix.osgi.import.pkg>
            com.ibm*;resolution:=optional,
            com.sun*;resolution:=optional,
            javanet.staxutils*;resolution:=optional,
            javax.jms*;resolution:=optional,
            javax.xml.soap,
            junit.framework*;resolution:=optional,
            org.apache.commons.lang*;resolution:=optional,
            org.apache.log4j*;resolution:=optional,
            org.apache.tools.ant*;resolution:=optional,
            org.apache.velocity*;resolution:=optional,
            org.apache.xmlbeans*;resolution:=optional,
            org.apache.ws.security*;resolution:=optional,
            org.codehaus.jra*;resolution:=optional,
            org.jdom*;resolution:=optional,
            org.junit*;resolution:=optional,
            org.mortbay*;resolution:=optional,
            org.mozilla.javascript*;resolution:=optional,
            org.springframework*;resolution:=optional,
            *
        </servicemix.osgi.import.pkg>
        <servicemix.osgi.private.pkg>
            META-INF*;-split-package:=merge-first,
            schemas*;-split-package:=merge-first
        </servicemix.osgi.private.pkg>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-bundle</artifactId>
            <version>2.0.5-incubator</version>
            <optional>true</optional>
        </dependency>

        <!-- Dependency on other bundles -->
        <dependency>
            <groupId>org.apache.ws.commons.schema</groupId>
            <artifactId>XmlSchema</artifactId>
            <version>1.3.2</version>
            <exclusions>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>xmlunit</groupId>
                    <artifactId>xmlunit</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.ws.commons</groupId>
                    <artifactId>ws-commons-java5</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>bundle</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
                        <Export-Package>${servicemix.osgi.export}</Export-Package>
                        <Import-Package>${servicemix.osgi.import.pkg}*</Import-Package>
                        <Private-Package>${servicemix.osgi.private.pkg}</Private-Package>
                        <_exportcontents>META-INF.cxf</_exportcontents>
                        <_failok>true</_failok>
                    </instructions>
                    <unpackBundle>true</unpackBundle>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
