<?xml version="1.0"?>
<!--
  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>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-bundle-minimal</artifactId>
    <packaging>bundle</packaging>
    <name>Apache CXF Minimal Bundle Jar</name>
    <description>Apache CXF Minimal Bundle Jar</description>
    <version>2.6.18-SNAPSHOT</version>
    <url>http://cxf.apache.org</url>

    <parent>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-bundle-parent</artifactId>
        <version>2.6.18-SNAPSHOT</version>
    </parent>
    <properties>
        <bundle.symbolic.name>${project.groupId}.bundle-minimal</bundle.symbolic.name>
    </properties>

    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-api</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-core</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>${project.version}</version>
        </dependency>
        

        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-transports-jms</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-bindings-soap</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-databinding-aegis</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-wstx-msv-validation</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-databinding-jaxb</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-frontend-simple</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-databinding-xmlbeans</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-ws-security</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-ws-policy</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-ws-addr</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-ws-rm</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
            <version>${project.version}</version>
        </dependency> 
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-rs-extension-providers</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-rs-extension-search</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
               <groupId>com.sun.xml.fastinfoset</groupId>
               <artifactId>FastInfoset</artifactId>
               <optional>true</optional>
          </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>2.3.7</version>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Implementation-Title>Apache CXF</Implementation-Title>
                        <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
                        <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
                        <Implementation-Version>${cxf.osgi.version.clean}</Implementation-Version>
                        <Specification-Title>Apache CXF</Specification-Title>
                        <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
                        <Specification-Version>${cxf.osgi.version.clean}</Specification-Version>
                        <SPI-Provider>true</SPI-Provider>
                        <DynamicImport-Package>
                            com.ctc.wstx.*,
                            com.sun.xml.bind.api,
                            com.sun.xml.bind.api.*,
                            com.sun.xml.internal.bind.api,
                            com.sun.xml.internal.bind.api.*,
                            org.apache.commons.logging.*,
                            org.slf4j.*,
                            org.slf4j.impl.*,
                            org.eclipse.jetty.plus.jaas,
                            org.eclipse.jetty.plus.jaas.*,
                            org.apache.karaf.jaas.modules,
                            org.apache.karaf.jaas.modules.*,
                            org.eclipse.jetty.jmx,
                            org.eclipse.jetty.jmx.*
                        </DynamicImport-Package>
                        <Import-Package>
                            !org.apache.cxf.*,
                            !META-INF.cxf,
                            !META-INF.cxf.osgi,
                            !schemas*,
                            org.apache.cxf.tools.*;version=${cxf.osgi.version.clean};resolution:=optional,
                            antlr*;resolution:=optional,
                            com.sun*;resolution:=optional,
                            javax.ws.rs*;resolution:=optional,
                            com.ctc.wstx.msv*;resolution:=optional,
                            net.sf.ehcache*;resolution:=optional,
                            org.codehaus.stax2*;resolution:=optional,
                            repackage;resolution:=optional,
                            javax.resource*;resolution:=optional,
                            javax.xml.soap,
                            junit.framework*;resolution:=optional,
                            net.sf.cglib*;resolution:=optional;version="${cxf.cglib.osgi.version}",
                            org.apache.abdera*;resolution:=optional;version="[1.0,2)",
                            org.apache.aries*;resolution:=optional;version="${cxf.aries.version.range}",
                            org.apache.commons.lang*;resolution:=optional;version="[2.4,3)",
                            org.apache.commons.codec*;resolution:=optional,
                            org.apache.commons.pool*;resolution:=optional,
                            org.apache.log4j*;resolution:=optional,
                            org.apache.mina*;resolution:=optional,
                            org.apache.velocity*;resolution:=optional,
                            org.apache.xmlbeans*;resolution:=optional,
                            org.apache.xml.security*;resolution:=optional,
                            org.apache.ws.security*;resolution:=optional,
                            org.codehaus.jettison*;resolution:=optional,
                            org.jaxen*;resolution:=optional,
                            org.jdom*;resolution:=optional,
                            org.junit*;resolution:=optional,
                            org.eclipse.jetty*;resolution:=optional;version="${cxf.jetty.osgi.version}",
                            org.mozilla.javascript*;resolution:=optional,
                            org.objectweb.asm*;version="[2.0,4)";resolution:=optional,
                            org.osgi.service.blueprint*;resolution:=optional,
                            org.slf4j*;resolution:=optional;version="[1.5,2)",
                            org.springframework*;resolution:=optional;version="[2.5,4)",
                            javax.activation;version="[0.0,2)",
                            javax.annotation;version="[0.0,2)",
                            javax.jms;resolution:=optional;version="[0.0,2)",
                            javax.jws*;version="[0.0,3)",
                            javax.mail*;version="[0.0,2)",
                            javax.servlet.*;version="[0.0,4)";resolution:=optional,
                            javax.xml.stream*;version="[0.0,2)",
                            javax.xml.bind*;version="[0.0,3)",
                            javax.xml.ws.spi.http*;version="[0.0,3)";resolution:=optional,
                            javax.xml.ws*;version="[0.0,3)",
                            *
                        </Import-Package>
                        <Bundle-Activator>org.apache.cxf.bus.osgi.CXFActivator</Bundle-Activator>
                        <Export-Package>
                            org.apache.cxf.*;version=${cxf.osgi.version.clean};-split-package:=merge-first,
                            '=META-INF.cxf';version=${cxf.osgi.version.clean},
                            '=META-INF.cxf.osgi';version=${cxf.osgi.version.clean},
                            '=schemas',
                            '=schemas.configuration',
                            '=schemas.wsdl'
                        </Export-Package>
                        <_failok>true</_failok>
                        <_nouses>true</_nouses>
                        <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <shadedGroupFilter>org.apache.cxf</shadedGroupFilter>
                            <shadedArtifactAttached>false</shadedArtifactAttached>
                            <createSourcesJar>${createSourcesJar}</createSourcesJar>
                            <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
                            <createDependencyReducedPom>true</createDependencyReducedPom>
                            <dependencyReducedPomLocation>${basedir}/target/dependency-reduced-pom.xml</dependencyReducedPomLocation>
                            <filters>
                                <filter>
                                    <artifact>${project.groupId}:${project.artifactId}</artifact>
                                    <excludes>
                                        <exclude>org/**</exclude>
                                    </excludes>
                                </filter>
                            </filters>

                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
                                    <projectName>Apache CXF</projectName>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.handlers</resource>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.schemas</resource>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/cxf/cxf.extension</resource>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
                                    <resource>META-INF/extensions.xml</resource>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
                                    <resource>META-INF/cxf/extensions.xml</resource>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/cxf/bus-extensions.txt</resource>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
                                    <resource>META-INF/cxf/bus-extensions.xml</resource>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
                                    <resource>META-INF/wsdl.plugin.xml</resource>
                                </transformer>                     
                                <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
                                    <resource>META-INF/cxf/java2wsbeans.xml</resource>
                                </transformer>
                                <transformer implementation="org.apache.cxf.maven.CXFAllTransformer" />
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>
