<?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>2.7.3</version>
	</parent>

	<artifactId>camel-example-loan-broker</artifactId>
	<packaging>bundle</packaging>
	<name>Camel :: Example :: Loan-Broker</name>
	<description>An example that shows the EPI's loan broker demo</description>

	<properties>
		<camel.osgi.export.pkg>
			org.apache.camel.loanbroker.*
    </camel.osgi.export.pkg>
		<camel.osgi.import.additional>
			org.apache.activemq.xbean,org.apache.activemq.broker,org.apache.activemq.pool
    </camel.osgi.import.additional>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-spring</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-cxf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-transports-http-jetty</artifactId>
			<version>${cxf-version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-jms</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-camel</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.xbean</groupId>
			<artifactId>xbean-spring</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

        <!-- logging -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
		</dependency>

		<!-- testing -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-test</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<build>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<executions>
					<execution>
						<phase>process-resources</phase>
						<goals>
							<goal>resources</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>attach-artifacts</id>
						<phase>package</phase>
						<goals>
							<goal>attach-artifact</goal>
						</goals>
						<configuration>
							<artifacts>
								<artifact>
									<file>target/classes/features.xml</file>
									<type>xml</type>
									<classifier>features</classifier>
								</artifact>
							</artifacts>
						</configuration>
					</execution>
				</executions>
			</plugin>


			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<forkMode>pertest</forkMode>
					<childDelegation>false</childDelegation>
					<useFile>true</useFile>
					<includes>
						<include>**/*Test.*</include>
					</includes>
					<systemProperties>
						<property>
							<name>java.util.logging.config.file</name>
							<value>${basedir}/target/test-classes/logging.properties</value>
						</property>
					</systemProperties>
				</configuration>
			</plugin>
			<!-- 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>
					<systemProperties>
						<property>
							<key>java.util.logging.config.file</key>
							<value>logging.properties</value>
						</property>
					</systemProperties>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<id>Queue.LoanBroker</id>
			<properties>
				<target.main.class>org.apache.camel.loanbroker.queue.version.LoanBroker</target.main.class>
			</properties>
		</profile>
		<profile>
			<id>Queue.Client</id>
			<properties>
				<target.main.class>org.apache.camel.loanbroker.queue.version.Client</target.main.class>
			</properties>
		</profile>
		<profile>
			<id>WS.LoanBroker</id>
			<properties>
				<target.main.class>org.apache.camel.loanbroker.webservice.version.LoanBroker</target.main.class>
			</properties>
		</profile>
		<profile>
			<id>WS.Client</id>
			<properties>
				<target.main.class>org.apache.camel.loanbroker.webservice.version.Client</target.main.class>
			</properties>
		</profile>
	</profiles>

</project>
