<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         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>3.0.0-SNAPSHOT</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-any23</module>
        <module>camel-example-artemis</module>
        <module>camel-example-artemis-amqp-blueprint</module>
        <module>camel-example-artemis-large-messages</module>
        <module>camel-example-as2</module>
        <module>camel-example-billboard-aggr</module>
        <module>camel-example-bigxml-split</module>
        <module>camel-example-cafe</module>
        <module>camel-example-cafe-endpointdsl</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-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-cxf-ws-security-signature</module>
        <module>camel-example-console</module>
        <module>camel-example-debezium</module>
        <module>camel-example-ehcache-blueprint</module>
        <module>camel-example-ftp</module>
        <module>camel-example-google-pubsub</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-jdbc</module>
        <module>camel-example-jira</module>
        <module>camel-example-jmx</module>
        <module>camel-example-jms-file</module>
        <module>camel-example-jooq</module>
        <module>camel-example-kafka</module>
        <module>camel-example-kafka-avro</module>
        <module>camel-example-kafka-offsetrepository</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-main</module>
        <module>camel-example-main-artemis</module>
        <module>camel-example-main-tiny</module>
        <module>camel-example-main-xml</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-executor-vertx</module>
        <module>camel-example-reactive-streams</module>
        <module>camel-example-rest-producer</module>
        <module>camel-example-rest-swagger</module>
        <module>camel-example-route-throttling</module>
        <module>camel-example-servlet-rest-blueprint</module>
        <module>camel-example-servlet-tomcat</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-amqp</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-pulsar</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-telegram</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-webhook</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>
        <javax.servlet.api.version>4.0.1</javax.servlet.api.version>
        <camel.osgi.export.pkg/>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--
              CAMEL-13084 Fix the spring-boot examples start up error by overriding servlet API version from camel-parent
              Wqe need to clean it up once camel-parent upgrade the servlet api version.
            -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>${javax.servlet.api.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

            <!-- 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-report:validate -->
            <plugin>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-report-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>
