<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.examples</groupId>
        <artifactId>loan-broker</artifactId>
        <version>4.2.0</version>
    </parent>

    <groupId>org.apache.servicemix.examples.loan-broker</groupId>
    <artifactId>loan-broker-jms-su</artifactId>
    <packaging>jbi-service-unit</packaging>
    <name>ServiceMix :: Samples :: Loan Broker :: JMS</name>

    <dependencies>
        <dependency>
            <groupId>org.apache.servicemix</groupId>
            <artifactId>servicemix-jms</artifactId>
            <version>${servicemix-jms-version}</version>
        </dependency>
	<dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-pool</artifactId>
            <version>${activemq.version}</version>
	    <exclusions>
		<exclusion>
		    <groupId>org.apache.activemq.protobuf</groupId>
		    <artifactId>activemq-protobuf</artifactId>
		</exclusion>
		<exclusion>
		    <groupId>org.apache.activemq</groupId>
		    <artifactId>kahadb</artifactId>
		</exclusion>
		<exclusion>
		    <groupId>commons-logging</groupId>
		    <artifactId>commons-logging-api</artifactId>
		</exclusion>
		<exclusion>
		    <groupId>commons-net</groupId>
		    <artifactId>commons-net</artifactId>
		</exclusion>
		<exclusion>
		    <groupId>org.apache.geronimo.specs</groupId>
		    <artifactId>geronimo-jta_1.0.1B_spec</artifactId>
		</exclusion>
		<exclusion>
		    <groupId>org.apache.geronimo.specs</groupId>
		    <artifactId>geronimo-jms_1.1_spec</artifactId>
		</exclusion>
		<exclusion>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-beans</artifactId>
		</exclusion>
	    </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.servicemix.tooling</groupId>
                <artifactId>jbi-maven-plugin</artifactId>
                <version>${servicemix-jbi-plugin-version}</version>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>
</project>
