<?xml version="1.0" encoding="UTF-8"?>

<!--
  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>
    <parent>
        <groupId>org.apache.camel</groupId>
        <artifactId>examples</artifactId>
        <version>1.6.0</version>
    </parent>

    <artifactId>camel-example-spring-jms</artifactId>
    <name>Camel :: Example :: Spring :: JMS</name>
    <description>An example using Spring XML to talk to the JMS server from different kind of client techniques
        and having AOP aspect to perform audit trails in the Camel Server
    </description>

    <dependencies>
        <!-- START SNIPPET: e1 -->
        <!-- required by both client and server -->
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-jms</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
        </dependency>
        <!-- END SNIPPET: e1 -->

        <!-- START SNIPPET: e2 -->
        <!-- xbean is required for ActiveMQ broker configuration in the spring xml file -->
        <dependency>
            <groupId>org.apache.xbean</groupId>
            <artifactId>xbean-spring</artifactId>
        </dependency>
        <!-- END SNIPPET: e2 -->

        <!-- START SNIPPET: e3 -->
        <!-- required jars for aspectj AOP support -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.5.4</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.5.4</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <version>2.1_3</version>
        </dependency>
        <!-- END SNIPPET: e3 -->

        <!-- for logging using log4j.properties in src/main/resources -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>

    </dependencies>

    <profiles>
        <profile>
            <id>CamelServer</id>
            <properties>
                <!-- we use Camel spring Main class as the server got all what it needs to start in the camel-server.xml file -->
                <target.main.class>org.apache.camel.spring.Main</target.main.class>
                <target.cmd.args>-ac META-INF/spring/camel-server.xml</target.cmd.args>
            </properties>
        </profile>
        <profile>
            <id>CamelServerAOP</id>
            <properties>
                <!-- we use Camel spring Main class as the server got all what it needs to start in the camel-server-aop.xml file -->
                <target.main.class>org.apache.camel.spring.Main</target.main.class>
                <target.cmd.args>-ac META-INF/spring/camel-server-aop.xml</target.cmd.args>
            </properties>
        </profile>
        <profile>
            <id>CamelClient</id>
            <properties>
                <!-- we start using our own class to control what we do in the main -->
                <target.main.class>org.apache.camel.example.client.CamelClient</target.main.class>
            </properties>
        </profile>
        <profile>
            <id>CamelClientRemoting</id>
            <properties>
                <!-- we start using our own class to control what we do in the main -->
                <target.main.class>org.apache.camel.example.client.CamelClientRemoting</target.main.class>
            </properties>
        </profile>
        <profile>
            <id>CamelClientEndpoint</id>
            <properties>
                <!-- we start using our own class to control what we do in the main -->
                <target.main.class>org.apache.camel.example.client.CamelClientEndpoint</target.main.class>
            </properties>
        </profile>
    </profiles>
    <build>
        <plugins>
            <!-- Allows the example to be run via 'mvn compile exec:java' -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <configuration>
                    <mainClass>${target.main.class}</mainClass>
                    <includePluginDependencies>false</includePluginDependencies>
                    <commandlineArgs>${target.cmd.args}</commandlineArgs>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>
