<?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.21.5</version>
    <relativePath>../parent</relativePath>
  </parent>

  <artifactId>examples</artifactId>
  <name>Camel :: Example</name>
  <groupId>org.apache.camel.example</groupId>
  <description>Camel Examples</description>
  <packaging>pom</packaging>

  <modules>
    <module>camel-example-activemq-tomcat</module>
    <module>camel-example-aggregate</module>
    <module>camel-example-artemis-amqp-blueprint</module>
    <module>camel-example-artemis-large-messages</module>
    <module>camel-example-bam</module>
    <module>camel-example-cafe</module>
    <module>camel-example-cassandra-kubernetes</module>
    <module>camel-example-cdi</module>
    <module>camel-example-cdi-aws-s3</module>
    <module>camel-example-cdi-cassandraql</module>
    <module>camel-example-cdi-kubernetes</module>
    <module>camel-example-cdi-metrics</module>
    <module>camel-example-cdi-osgi</module>
    <module>camel-example-cdi-properties</module>
    <module>camel-example-cdi-rest-servlet</module>
    <module>camel-example-cdi-test</module>
    <module>camel-example-cdi-xml</module>
    <module>camel-example-cxf</module>
    <module>camel-example-cxf-blueprint</module>
    <module>camel-example-cxf-proxy</module>
    <module>camel-example-cxf-tomcat</module>
    <module>camel-example-console</module>
    <module>camel-example-ftp</module>
    <module>camel-example-google-pubsub</module>
    <module>camel-example-guice-jms</module>
    <module>camel-example-groovy</module>
    <module>camel-example-grpc-kubernetes</module>
    <module>camel-example-hazelcast-kubernetes</module>
    <module>camel-example-hystrix</module>
    <module>camel-example-java8</module>
    <module>camel-example-java8-rx</module>
    <module>camel-example-jdbc</module>
    <module>camel-example-jmx</module>
    <module>camel-example-jms-file</module>
    <module>camel-example-kafka</module>
    <module>camel-example-kotlin</module>
    <module>camel-example-loadbalancing</module>
    <module>camel-example-loan-broker-cxf</module>
    <module>camel-example-loan-broker-jms</module>
    <module>camel-example-management</module>
    <module>camel-example-mybatis</module>
    <module>camel-example-netty-http</module>
    <module>camel-example-olingo4-blueprint</module>
    <module>camel-example-opentracing</module>
    <module>camel-example-pojo-messaging</module>
    <module>camel-example-rabbitmq</module>
    <module>camel-example-reactive-streams</module>
    <module>camel-example-reload</module>
    <module>camel-example-reportincident</module>
    <module>camel-example-reportincident-wssecurity</module>
    <module>camel-example-rest-producer</module>
    <module>camel-example-rest-swagger</module>
    <module>camel-example-restlet-jdbc</module>
    <module>camel-example-route-throttling</module>
    <module>camel-example-scala</module>
    <module>camel-example-servlet-rest-blueprint</module>
    <module>camel-example-servlet-tomcat</module>
    <module>camel-example-servlet-tomcat-no-spring</module>
    <module>camel-example-simplejirabot</module>
    <module>camel-example-spark-rest</module>
    <module>camel-example-splunk</module>
    <module>camel-example-spring</module>
    <module>camel-example-spring-boot</module>
    <module>camel-example-spring-boot-activemq</module>
    <module>camel-example-spring-boot-clustered-route-controller</module>
    <module>camel-example-spring-boot-geocoder</module>
    <module>camel-example-spring-boot-grpc</module>
    <module>camel-example-spring-boot-health-checks</module>
    <module>camel-example-spring-boot-infinispan</module>
    <module>camel-example-spring-boot-live-reload</module>
    <module>camel-example-spring-boot-master</module>
    <module>camel-example-spring-boot-metrics</module>
    <module>camel-example-spring-boot-pojo</module>
    <module>camel-example-spring-boot-rest-jpa</module>
    <module>camel-example-spring-boot-rest-swagger</module>
    <module>camel-example-spring-boot-servicecall</module>
    <module>camel-example-spring-boot-supervising-route-controller</module>
    <module>camel-example-spring-boot-xml</module>
    <module>camel-example-spring-cloud-servicecall</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-blueprint</module>
    <module>camel-example-swagger-cdi</module>
    <module>camel-example-swagger-osgi</module>
    <module>camel-example-swagger-xml</module>
    <module>camel-example-tracer</module>
    <module>camel-example-transformer-blueprint</module>
    <module>camel-example-transformer-cdi</module>
    <module>camel-example-transformer-demo</module>
    <module>camel-example-twitter-salesforce</module>
    <module>camel-example-twitter-websocket</module>
    <module>camel-example-twitter-websocket-blueprint</module>
    <module>camel-example-validator-spring-boot</module>
    <module>camel-example-widget-gadget-cdi</module>
    <module>camel-example-widget-gadget-java</module>
    <module>camel-example-widget-gadget-xml</module>
    <module>camel-example-zipkin</module>
  </modules>

  <properties>
    <!-- for symbolicName in OSGi examples we only want the artifactId, eg camel-example-sql -->
    <!-- as having org.apache.camel as prefix is not needed and makes the name very long -->
    <camel.osgi.symbolic.name>${project.artifactId}</camel.osgi.symbolic.name>
    <skip.starting.camel.context>false</skip.starting.camel.context>
    <camel.osgi.export.pkg />
  </properties>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>

      <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>

      <!-- update readme file -->
      <plugin>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-package-maven-plugin</artifactId>
        <version>${project.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>prepare-example</goal>
            </goals>
            <phase>process-resources</phase>
          </execution>
        </executions>
      </plugin>

      <!-- to validate Camel endpoints: mvn camel:validate -->
      <plugin>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-maven-plugin</artifactId>
        <version>${project.version}</version>
        <configuration>
          <failOnError>false</failOnError>
          <includeTest>true</includeTest>
          <includeXml>true</includeXml>
          <ignoreLenientProperties>false</ignoreLenientProperties>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <forkCount>1</forkCount>
          <reuseForks>false</reuseForks>
          <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>
