<?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.23.0</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-fhir</module>
    <module>camel-example-fhir-auth-tx-spring-boot</module>
    <module>camel-example-fhir-osgi</module>
    <module>camel-example-fhir-spring-boot</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-ehcache-blueprint</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-micrometer</module>	
    <module>camel-example-mybatis</module>
    <module>camel-example-netty-custom-correlation</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-httpregistry-blueprint</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-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-cloud-serviceregistry</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>
