<?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>3.0.0-RC3</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-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>
