<?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>
    <artifactId>cxf-bundle-compatible</artifactId>
    <packaging>bundle</packaging>
    <name>Apache CXF Compatibility Bundle Jar</name>
    <description>Apache CXF Compatibility Bundle Jar</description>
    <url>https://cxf.apache.org</url>
    <parent>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-bundle-parent</artifactId>
        <version>3.3.10</version>
    </parent>
    <properties>
        <cxf.osgi.symbolic.name>${project.groupId}.bundle</cxf.osgi.symbolic.name>
        <cxf.module.name>org.apache.cxf.bundle</cxf.module.name>
    </properties>
    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-tools-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-tools-validator</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-tools-wsdlto-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-tools-misctools</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-tools-wsdlto-databinding-jaxb</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-tools-corba</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-tools-wsdlto-frontend-jaxws</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-tools-wadlto-jaxrs</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-tools-wsdlto-frontend-javascript</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-tools-java2ws</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-management</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cxf-rt-transports-local</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>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${cxf.osgi.symbolic.name}</Bundle-SymbolicName>
                        <Implementation-Title>Apache CXF Compatibility Bundle</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 Compatibility Bundle</Specification-Title>
                        <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
                        <Specification-Version>${cxf.osgi.version.clean}</Specification-Version>
                        <DynamicImport-Package>*</DynamicImport-Package>
                        <DynamicImport-Package>
                            com.sun.xml.bind,
                            com.sun.xml.bind.*,
                            com.sun.xml.internal.bind,
                            com.sun.xml.internal.bind.*,
                            com.ctc.wstx.*,
                            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,
                            antlr*;resolution:=optional,
                            com.sun*;resolution:=optional,
                            com.ctc.wstx.msv*;resolution:=optional,
                            net.sf.ehcache*;resolution:=optional,
                            org.codehaus.stax2*;resolution:=optional,
                            commonj.sdo*;resolution:=optional,
                            javax.ws.rs*;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.lang3*;resolution:=optional;version="[3,4)",
                            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.xml.security*;resolution:=optional,
                            org.apache.ws.security*;resolution:=optional,
                            org.codehaus.jettison*;resolution:=optional,
                            org.eclipse.emf*;resolution:=optional,
                            org.eclipse.jetty*;resolution:=optional;version="${cxf.jetty.osgi.version}",
                            org.jaxen*;resolution:=optional,
                            org.jdom*;resolution:=optional,
                            org.junit*;resolution:=optional,
                            org.mozilla.javascript*;resolution:=optional,
                            org.objectweb.asm*;version="[2.0,4)";resolution:=optional,
                            org.omg*;resolution:=optional,
                            org.opensaml*;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.bind*;version="[0.0,3)",
                            javax.xml.stream*;version="[0.0,2)",
                            javax.xml.ws.spi.http*;version="[0.0,3)";resolution:=optional,
                            javax.xml.ws*;version="[0.0,3)",
                            *
                        </Import-Package>
                        <Require-Bundle>org.apache.cxf.cxf-core;visibility:=reexport,
                            org.apache.cxf.cxf-rt-frontend-jaxws;visibility:=reexport,
                            org.apache.cxf.cxf-rt-frontend-jaxrs;visibility:=reexport, 
                            org.apache.cxf.cxf-rt-transports-http;visibility:=reexport,
                            org.apache.cxf.cxf-rt-bindings-soap;visibility:=reexport,
                            org.apache.cxf.cxf-rt-ws-security;visibility:=reexport,
                            org.apache.cxf.cxf-rt-ws-rm;visibility:=reexport</Require-Bundle>
                        <_failok>true</_failok>
                        <_nouses>true</_nouses>
                        <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>
                                            org.apache.maven.plugins
                                        </groupId>
                                        <artifactId>
                                            maven-antrun-plugin
                                        </artifactId>
                                        <versionRange>
                                            [1.7,)
                                        </versionRange>
                                        <goals>
                                            <goal>run</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>
                                            org.codehaus.mojo
                                        </groupId>
                                        <artifactId>
                                            properties-maven-plugin
                                        </artifactId>
                                        <versionRange>
                                            [1.0-alpha-2,)
                                        </versionRange>
                                        <goals>
                                            <goal>
                                                read-project-properties
                                            </goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
