<?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.activemq</groupId>
	    <artifactId>activemq</artifactId>
        <version>4.2.0</version>
    </parent>

    <groupId>org.apache.servicemix.activemq</groupId>
    <artifactId>org.apache.servicemix.activemq.commands</artifactId>
    <packaging>bundle</packaging>
    <version>4.2.0</version>
    <name>Apache ServiceMix Features :: ActiveMQ Commands</name>

    <description>
        Provides the ActiveMQ commands
    </description>

    <dependencies>
      <dependency>
        <groupId>org.apache.felix.karaf.shell</groupId>
        <artifactId>org.apache.felix.karaf.shell.console</artifactId>
        <version>${felix.karaf.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.felix</groupId>
          <artifactId>org.osgi.core</artifactId>
          <scope>provided</scope>
      </dependency>

        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
            <version>${activemq.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-optional</artifactId>
            <version>${activemq.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-console</artifactId>
            <version>${activemq.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-pool</artifactId>
            <version>${activemq.version}</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
                        <Export-Package>org.apache.servicemix.activemq.commands;version=${project.version};-split-package:=merge-first</Export-Package>
                        <Import-Package>
                          org.apache.felix.gogo.commands,
                          *
                        </Import-Package>
                        <Private-Package>!*</Private-Package>
                        <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
