<?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>camel-parent</artifactId>
    <version>2.11.1</version>
    <relativePath>../parent</relativePath>
  </parent>

  <artifactId>examples</artifactId>
  <name>Camel :: Examples</name>
  <description>Camel Examples</description>
  <packaging>pom</packaging>

  <modules>
    <module>camel-example-activemq-tomcat</module>
    <module>camel-example-aggregate</module>
    <module>camel-example-bam</module>
    <module>camel-example-cafe</module>
    <module>camel-example-cdi</module>
    <module>camel-example-cxf</module>
    <module>camel-example-cxf-blueprint</module>
    <module>camel-example-cxf-osgi</module>
    <module>camel-example-cxf-proxy</module>
    <module>camel-example-cxf-tomcat</module>
    <module>camel-example-console</module>
    <module>camel-example-docs</module>
    <module>camel-example-etl</module>
    <module>camel-example-ftp</module>
    <module>camel-example-gae</module>
    <module>camel-example-gauth</module>
    <module>camel-example-guice-jms</module>
    <module>camel-example-jmx</module>
    <module>camel-example-jms-file</module>
    <module>camel-example-loadbalancing</module>
    <module>camel-example-loan-broker</module>
    <module>camel-example-management</module>
    <module>camel-example-osgi</module>
    <module>camel-example-osgi-rmi</module>
    <module>camel-example-pojo-messaging</module>
    <module>camel-example-reportincident</module>
    <module>camel-example-reportincident-wssecurity</module>
    <module>camel-example-route-throttling</module>
    <module>camel-example-servlet-tomcat</module>
    <module>camel-example-servlet-tomcat-no-spring</module>
    <module>camel-example-simplejirabot</module>
    <module>camel-example-spring</module>
    <module>camel-example-spring-javaconfig</module>
    <module>camel-example-spring-jms</module>
    <module>camel-example-spring-ws</module>
    <module>camel-example-spring-xquery</module>
    <module>camel-example-spring-security</module>
    <module>camel-example-ssh</module>
    <module>camel-example-ssh-security</module>
    <module>camel-example-sql</module>
    <module>camel-example-tracer</module>
    <module>camel-example-twitter-websocket</module>
  </modules>
 
  <properties>
    <skip.starting.camel.context>false</skip.starting.camel.context>
  </properties>

    <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>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <forkMode>pertest</forkMode>
                    <systemPropertyVariables>
                        <skipStartingCamelContext>${skip.starting.camel.context}</skipStartingCamelContext>
                    </systemPropertyVariables>
                </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.felix</groupId>
                        <artifactId>maven-bundle-plugin</artifactId>
                        <versionRange>[2.3.7,)</versionRange>
                        <goals>
                          <goal>cleanVersions</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
    </build>

    <profiles>
    <profile>
       <id>container-test</id>
       <properties>
          <skip.starting.camel.context>true</skip.starting.camel.context>
       </properties>
    </profile>
    <!-- 
      This profile allows you to add a repository to the repo list so that 
      you can test the examples out against a staged version of the camel distribution 
    -->
    <profile>
      <id>add-remote-repo</id>
      <activation>
        <property>
          <name>remoteRepo</name>
        </property>
      </activation>

      <repositories>
        <repository>
          <id>dynamic.repo</id>
          <name>Repository Dynamically Added Via the Command Line</name>
          <url>$remoteRepo</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>dynamic.repo</id>
          <name>Repository Dynamically Added Via the Command Line</name>
          <url>$remoteRepo</url>
        </pluginRepository>
      </pluginRepositories>

    </profile>
  </profiles>

</project>
