<?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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-dependencies</artifactId>
        <version>3.11.0</version>
    </parent>

    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus</artifactId>
    <version>2.2.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>Camel Quarkus</name>
    <description>Apache Camel extensions for Quarkus</description>
    <url>http://camel.apache.org</url>
    <inceptionYear>2019</inceptionYear>

    <properties>
        <!-- Primary dependencies - maintained manually -->
        <camel.major.minor>3.11</camel.major.minor> <!-- run after each change: cd docs && mvnd validate -->
        <camel.version>${camel.major.minor}.0</camel.version>
        <camel.docs.components.xref>${camel.major.minor}.x@components</camel.docs.components.xref><!-- the version in Camel's docs/components/antora.yml -->
        <camel.docs.branch>camel-${camel.major.minor}.x</camel.docs.branch><!-- The stable branch on which our Antora docs depends -->

        <cassandra-quarkus.version>1.1.0</cassandra-quarkus.version><!-- https://repo1.maven.org/maven2/com/datastax/oss/quarkus/cassandra-quarkus-bom/ -->
        <debezium.version>1.6.1.Final</debezium.version><!-- May go back to Camel's ${debezium-version} when they are in sync https://repo1.maven.org/maven2/io/debezium/debezium-bom/ -->
        <optaplanner.version>8.8.0.Final</optaplanner.version><!-- May go back to Camel's ${optaplanner-version} when they are in sync https://repo1.maven.org/maven2/org/optaplanner/optaplanner-quarkus/ -->
        <quarkiverse.freemarker.version>0.3.0</quarkiverse.freemarker.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/freemarker/quarkus-freemarker-parent/ -->
        <quarkiverse-minio.version>2.0.0</quarkiverse-minio.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/minio/quarkus-minio-parent/ -->
        <quarkus.version>2.1.0.Final</quarkus.version><!-- https://repo1.maven.org/maven2/io/quarkus/quarkus-bom/ -->
        <quarkus-google-cloud.version>0.9.0</quarkus-google-cloud.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/googlecloudservices/quarkus-google-cloud-services-bom/ -->
        <quarkus-hazelcast-client.version>2.0.0</quarkus-hazelcast-client.version><!-- https://repo1.maven.org/maven2/com/hazelcast/quarkus-hazelcast-client-bom/ -->
        <quarkus-qpid-jms.version>0.26.0</quarkus-qpid-jms.version><!-- https://repo1.maven.org/maven2/org/amqphub/quarkus/quarkus-qpid-jms-bom/ -->

        <!-- Compile dependency versions (keep sorted alphabetically) -->
        <!-- Items annotated with @sync can be updated by running mvn cq:sync-versions -N -e -->
        <ahc.version>${ahc-version}</ahc.version>
        <animal-sniffer.version>1.18</animal-sniffer.version>
        <antlr3.version>3.5.2</antlr3.version><!-- Spark, Stringtemplate and probably others -->
        <avro.version>1.10.2</avro.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.apache.avro:avro -->
        <aws-java-sdk.version>1.11.714</aws-java-sdk.version>
        <azure-sdk-bom.version>1.0.3</azure-sdk-bom.version><!-- Revert back to ${azure-sdk-bom-version} with Camel 3.11 see https://github.com/apache/camel/pull/5642 -->
        <bouncycastle.version>1.69</bouncycastle.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.bouncycastle:bcprov-jdk15on -->
        <commons-beanutils.version>${commons-beanutils-version}</commons-beanutils.version>
        <commons-cli.version>1.4</commons-cli.version><!-- keep in sync with Quarkus, via quarkus-bootstrap-core -->
        <commons-collections.version>3.2.2</commons-collections.version><!-- used by hbase, should be pretty stable as commons-collections are not developed actively anymore -->
        <commons-lang.version>2.6</commons-lang.version><!-- used by hbase, should be pretty stable as commons-lang is not developed actively anymore -->
        <commons-math3.version>3.6.1</commons-math3.version><!-- Mess in the transitive dependencies of Spark and hbase-testing-util -->
        <curator.version>4.3.0</curator.version><!-- Mess in the transitive dependencies of Spark, Zookeeper and other hadoop related components -->
        <derby.version>10.15.2.0</derby.version><!-- Spark -->
        <eddsa.version>${eddsa-version}</eddsa.version>
        <freemarker.version>2.3.31</freemarker.version><!-- @sync io.quarkiverse.freemarker:quarkus-freemarker-parent:${quarkiverse.freemarker.version} prop:freemarker.version -->
        <fommil.netlib.core.version>1.1.2</fommil.netlib.core.version><!-- Mess in Weka transitive deps -->
        <jodatime.version>2.10.6</jodatime.version><!-- Mess in transitive dependencies of Spark and Splunk -->
        <github-api.version>1.111</github-api.version><!-- Used in a Groovy script bellow -->
        <guava.version>29.0-jre</guava.version>
        <graalvm.version>21.1.0</graalvm.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.graalvm.nativeimage:svm -->
        <gson.version>2.8.6</gson.version><!-- @sync com.ibm.jsonata4java:JSONata4Java:${jsonata4java-version} dep:com.google.code.gson:gson -->
        <hadoop2.version>${hadoop2-version}</hadoop2.version><!-- Spark -->
        <hapi.version>${hapi-version}</hapi.version>
        <hapi-fhir.version>${hapi-fhir-version}</hapi-fhir.version>
        <hbase.version>${hbase-version}</hbase.version>
        <htrace.version>4.2.0-incubating</htrace.version><!-- Mess in hbase transitive deps -->
        <influxdb.version>${influx-java-driver-version}</influxdb.version>
        <jackson-asl.version>1.9.13</jackson-asl.version><!-- Mess in the transitive dependencies of spark and hbase-testing-util -->
        <jakarta.jws.ws.api.version>2.1.0</jakarta.jws.ws.api.version>
        <jakarta.xml.ws.api.version>2.3.3</jakarta.xml.ws.api.version>
        <jcodings.version>1.0.55</jcodings.version><!-- used by hbase -->
        <joni.version>2.1.31</joni.version><!-- used by json-validator -->
        <jsoup.version>1.12.1</jsoup.version><!-- used by oaipmh -->
        <jaxen.version>1.2.0</jaxen.version>
        <javassist.version>3.22.0-CR2</javassist.version><!-- debezium -->
        <jersey-sun.version>1.19.4</jersey-sun.version><!-- Spark -->
        <jetty.version>${jetty9-version}</jetty.version>
        <jnr-ffi.version>2.1.2</jnr-ffi.version><!-- Mess in web3j transitive deps -->
        <json-smart.version>2.4.7</json-smart.version>
        <kafka.version>2.8.0</kafka.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.apache.kafka:kafka-clients -->
        <kudu.version>${kudu-version}</kudu.version>
        <kotlin.version>1.5.21</kotlin.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.jetbrains.kotlin:kotlin-stdlib -->
        <netty3.version>${netty3-version}</netty3.version><!-- Spark -->
        <minio.version>${minio-version}</minio.version><!-- Keep in sync with quarkiverse-minio and Camel, preferring Camel assuming that it is more likely to be up to date -->
        <mvel2.version>${mvel-version}</mvel2.version>
        <nimbus-jose-jwt.version>9.10</nimbus-jose-jwt.version><!-- Mess in hdfs transitive deps, used also by io.strimzi:kafka-oauth-client recommended by https://quarkus.io/guides/kafka#authenticating-with-oauth -->
        <okhttp.version>${squareup-okhttp-version}</okhttp.version>
        <okio.version>${squareup-okio-version}</okio.version>
        <protobuf.version>${protobuf-version}</protobuf.version>
        <retrofit.version>2.5.0</retrofit.version>
        <saaj.impl.version>1.5.3</saaj.impl.version>
        <scala-2.11.version>2.11.12</scala-2.11.version><!-- Spark -->
        <smallrye.reactive.messaging.camel.version>3.7.1</smallrye.reactive.messaging.camel.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:io.smallrye.reactive:smallrye-reactive-messaging-provider -->
        <spring.version>${spring5-version}</spring.version>
        <snakeyaml.version>${snakeyaml-version}</snakeyaml.version>
        <snappy.version>1.1.7.7</snappy.version><!-- Spark -->
        <threetenbp.version>1.4.0</threetenbp.version>
        <xalan.version>${xalan-version}</xalan.version>
        <xchange.version>${xchange-version}</xchange.version>
        <xerces.version>${xerces-version}</xerces.version>
        <xmlgraphics-commons.version>2.3</xmlgraphics-commons.version><!-- mess in FOP transitive deps -->
        <xstream.version>${xstream-version}</xstream.version>
        <web3j.version>${web3j-version}</web3j.version>
        <web3j.quorum.version>${web3j-quorum-version}</web3j.quorum.version>
        <woodstox-core.version>${woodstox-core-version}</woodstox-core.version>
        <zookeeper.version>${solr-zookeeper-version}</zookeeper.version><!-- ${solr-zookeeper-version} is newer than ${zookeeper-version} -->
        <zxing.version>3.3.3</zxing.version><!-- Mess in IOTA transitive deps -->

        <!-- Test dependency versions (keep sorted alphabetically) -->
        <commons-logging.version>1.2</commons-logging.version><!-- Mess in the transitive dependencies of hbase-testing-util -->
        <consul-client.version>1.3.3</consul-client.version>
        <ftpserver.version>1.1.1</ftpserver.version>
        <istack-commons-runtime.version>3.0.10</istack-commons-runtime.version>
        <jakarta.mail.version>${jakarta-mail-version}</jakarta.mail.version>
        <htmlunit-driver.version>2.47.1</htmlunit-driver.version>
        <mock-javamail.version>${mock-javamail-version}</mock-javamail.version>
        <pdfbox.version>${pdfbox-version}</pdfbox.version>
        <slf4j-log4j12.version>1.7.30</slf4j-log4j12.version><!-- Mess in the transitive dependencies of hbase-testing-util -->
        <sshd.version>${sshd-version}</sshd.version>
        <stax2.version>4.2</stax2.version>
        <wiremock.version>2.27.2</wiremock.version>
        <zt-exec.version>1.11</zt-exec.version>

        <!-- Maven plugin versions (keep sorted alphabetically) -->
        <cq-plugin.version>0.36.0</cq-plugin.version>
        <build-helper-maven-plugin.version>3.1.0</build-helper-maven-plugin.version>
        <exec-maven-plugin.version>3.0.0</exec-maven-plugin.version>
        <formatter-maven-plugin.version>2.11.0</formatter-maven-plugin.version>
        <frontend-maven-plugin.version>1.6</frontend-maven-plugin.version>
        <groovy-maven-plugin.version>2.1.1</groovy-maven-plugin.version>
        <groovy.version>3.0.8</groovy.version>
        <impsort-maven-plugin.version>1.3.2</impsort-maven-plugin.version>
        <jandex-maven-plugin.version>1.0.8</jandex-maven-plugin.version>
        <mycila-license.version>3.0</mycila-license.version>
        <maven-assembly-plugin.version>3.1.1</maven-assembly-plugin.version>
        <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
        <maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version>
        <maven-enforcer-plugin.version>3.0.0-M3</maven-enforcer-plugin.version>
        <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
        <maven-deploy-plugin.version>3.0.0-M1</maven-deploy-plugin.version>
        <maven-jar-plugin.version>3.2.0</maven-jar-plugin.version>
        <maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
        <maven-plugin-plugin.version>3.6.1</maven-plugin-plugin.version>
        <maven-source-plugin.version>3.1.0</maven-source-plugin.version>
        <maven-release-plugin.version>2.5.3</maven-release-plugin.version>
        <maven-resources-plugin.version>3.1.0</maven-resources-plugin.version>
        <maven-shade-plugin.version>3.2.4</maven-shade-plugin.version>
        <!-- NOTE: We pin to this version due to https://github.com/apache/camel-quarkus/issues/723 -->
        <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
        <properties-maven-plugin.version>1.0.0</properties-maven-plugin.version>
        <rpkgtests-maven-plugin.version>0.10.0</rpkgtests-maven-plugin.version>

        <!-- Plugin configuration through properties  -->

        <!-- maven-resources-plugin -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- maven-compiler-plugin -->
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.testTarget>${maven.compiler.target}</maven.compiler.testTarget>
        <maven.compiler.testSource>${maven.compiler.source}</maven.compiler.testSource>

        <!-- maven-enforcer-plugin -->
        <min-maven-version>3.6.2</min-maven-version>
        <target-maven-version>3.8.1</target-maven-version><!-- @sync io.quarkus:quarkus-build-parent:${quarkus.version} prop:proposed-maven-version -->
        <supported-maven-versions>[${min-maven-version},)</supported-maven-versions>

        <!-- maven-release-plugin -->
        <tagNameFormat>@{project.version}</tagNameFormat>
    </properties>

    <modules>
        <module>poms</module>
        <module>tooling</module>
        <module>extensions-core</module>
        <module>extensions-support</module>
        <module>extensions</module>
        <module>extensions-jvm</module>
        <module>catalog</module>
        <module>integration-tests-support</module>
        <module>integration-tests</module>
        <module>integration-test-groups</module>
        <module>docs</module>
    </modules>

    <developers>
        <developer>
            <name>The Apache Camel Team</name>
            <email>dev@camel.apache.org</email>
            <url>http://camel.apache.org</url>
            <organization>Apache Software Foundation</organization>
            <organizationUrl>http://apache.org/</organizationUrl>
            <properties>
                <picUrl>http://camel.apache.org/banner.data/apache-camel-7.png</picUrl>
            </properties>
        </developer>
    </developers>

    <mailingLists>
        <mailingList>
            <name>Development List</name>
            <subscribe>dev-subscribe@camel.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@camel.apache.org</unsubscribe>
            <post>dev@camel.apache.org</post>
        </mailingList>
        <mailingList>
            <name>User List</name>
            <subscribe>users-subscribe@camel.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@camel.apache.org</unsubscribe>
            <post>users@camel.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Commits List</name>
            <subscribe>commits-subscribe@camel.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@camel.apache.org</unsubscribe>
            <post>commits@camel.apache.org</post>
        </mailingList>
    </mailingLists>

    <scm>
        <connection>scm:git:http://gitbox.apache.org/repos/asf/camel-quarkus.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/camel-quarkus.git</developerConnection>
        <url>https://gitbox.apache.org/repos/asf?p=camel-quarkus.git;a=summary</url>
        <tag>HEAD</tag>
    </scm>

    <issueManagement>
        <system>GitHub</system>
        <url>https://github.com/apache/camel-quarkus/issues</url>
    </issueManagement>

    <repositories>
        <repository>
            <id>apache.snapshots</id>
            <url>https://repository.apache.org/snapshots/</url>
            <name>Apache Snapshot Repo</name>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>apache.snapshots</id>
            <url>https://repository.apache.org/snapshots/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>

    <build>
        <pluginManagement>
            <plugins>
                <!-- Only plugins relevant to both end user applications and Camel Quarkus extensions -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin.version}</version>
                    <configuration>
                        <showDeprecation>true</showDeprecation>
                        <showWarnings>true</showWarnings>
                        <compilerArgs>
                            <arg>-Xlint:unchecked</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>${maven-deploy-plugin.version}</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven-javadoc-plugin.version}</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-plugin-plugin</artifactId>
                    <version>${maven-plugin-plugin.version}</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>${maven-release-plugin.version}</version>
                    <configuration>
                        <!-- release:prepare config -->
                        <preparationGoals>clean package</preparationGoals>
                        <waitBeforeTagging>10</waitBeforeTagging>
                        <!-- release:perform config -->
                        <useReleaseProfile>true</useReleaseProfile>
                        <releaseProfiles>apache-release</releaseProfiles>
                        <goals>deploy</goals>
                        <!-- Both release:prepare and release:perform config -->
                        <arguments>-DskipTests -Denforcer.skip -Dquarkus.build.skip -Dformatter.skip -Dimpsort.skip</arguments>
                    </configuration>
                </plugin>

                <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-resources-plugin</artifactId>
                  <version>${maven-resources-plugin.version}</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>${maven-shade-plugin.version}</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                    <configuration>
                        <failIfNoTests>false</failIfNoTests>
                        <systemProperties>
                            <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                        </systemProperties>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${maven-enforcer-plugin.version}</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>${exec-maven-plugin.version}</version>
                </plugin>

                <plugin>
                    <groupId>io.quarkus</groupId>
                    <artifactId>quarkus-maven-plugin</artifactId>
                    <version>${quarkus.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.l2x6.cq</groupId>
                    <artifactId>cq-maven-plugin</artifactId>
                    <version>${cq-plugin.version}</version>
                    <configuration>
                        <extensionDirectories>
                            <extensionDirectory>${project.basedir}/extensions-core</extensionDirectory>
                            <extensionDirectory>${project.basedir}/extensions</extensionDirectory>
                            <extensionDirectory>${project.basedir}/extensions-jvm</extensionDirectory>
                        </extensionDirectories>
                        <skipArtifactIdBases>
                            <skipArtifactIdBase>http-common</skipArtifactIdBase>
                            <skipArtifactIdBase>integration-test-support-custom-log-component</skipArtifactIdBase>
                            <skipArtifactIdBase>integration-test-support-custom-main-listener</skipArtifactIdBase>
                            <skipArtifactIdBase>integration-test-support-custom-routes-collector</skipArtifactIdBase>
                            <skipArtifactIdBase>integration-test-support-custom-type-converter</skipArtifactIdBase>
                        </skipArtifactIdBases>
                    </configuration>
                    <dependencies>
                        <!-- include camel-catalog on classpath -->
                        <dependency>
                            <groupId>org.apache.camel</groupId>
                            <artifactId>camel-catalog</artifactId>
                            <version>${camel.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.gmaven</groupId>
                    <artifactId>groovy-maven-plugin</artifactId>
                    <version>${groovy-maven-plugin.version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.codehaus.groovy</groupId>
                            <artifactId>groovy-all</artifactId>
                            <version>${groovy.version}</version>
                            <type>pom</type>
                            <exclusions>
                                <exclusion>
                                    <!-- groovy-testng depends on testng 7.2.0 wich is not on maven central -->
                                    <groupId>org.codehaus.groovy</groupId>
                                    <artifactId>groovy-testng</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${maven-jar-plugin.version}</version>
                </plugin>

                <!-- license-maven-plugin is not necessarily relevant for user applications.
                     It is managed here so that we can have its config defined on a single place.
                     It is executed from profiles only -->
                <plugin>
                    <groupId>com.mycila</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>${mycila-license.version}</version>
                    <configuration>
                        <failIfUnknown>true</failIfUnknown>
                        <header>header.txt</header>
                        <excludes>
                            <exclude>**/*.adoc</exclude>
                            <exclude>**/*.adm</exclude>
                            <exclude>**/*.avsc</exclude>
                            <exclude>**/*.avpr</exclude>
                            <exclude>**/*.bin</exclude>
                            <exclude>**/*.cnf</exclude>
                            <exclude>**/*.conf</exclude>
                            <exclude>**/*.csv</exclude>
                            <exclude>**/*.der</exclude>
                            <exclude>**/*.ftl</exclude>
                            <exclude>**/*.graphql</exclude>
                            <exclude>**/*.ics</exclude>
                            <exclude>**/*.jks</exclude>
                            <exclude>**/*.kts</exclude>
                            <exclude>**/*.lock</exclude>
                            <exclude>**/*.mp3</exclude>
                            <exclude>**/*.mp4</exclude>
                            <exclude>**/*.mvel</exclude>
                            <exclude>**/*.p12</exclude>
                            <exclude>**/*.pem</exclude>
                            <exclude>**/*.pgp</exclude>
                            <exclude>**/*.proto</exclude>
                            <exclude>**/*.spec</exclude>
                            <exclude>**/*.txt</exclude>
                            <exclude>**/*.xquery</exclude>
                            <exclude>**/.factorypath</exclude>
                            <exclude>**/.pnp.js</exclude>
                            <exclude>**/.yarnrc.yml</exclude>
                            <exclude>**/LICENSE.txt</exclude>
                            <exclude>**/LICENSE</exclude>
                            <exclude>**/META-INF/persistence*.xsd</exclude>
                            <exclude>**/NOTICE.txt</exclude>
                            <exclude>**/NOTICE</exclude>
                            <exclude>**/README</exclude>
                            <exclude>**/.yarn/**</exclude>
                            <exclude>**/cacerts</exclude>
                            <exclude>**/camel-quarkus-test-list.xml</exclude>
                            <exclude>**/node_modules/**</exclude>
                            <exclude>**/pom.xml.versionsBackup</exclude>
                            <exclude>.mvn/**</exclude>
                            <exclude>KEYS</exclude>
                            <exclude>doap.rdf</exclude>
                            <exclude>ide-config/**</exclude>
                            <exclude>id_file</exclude>
                            <exclude>mvnw*</exclude>
                            <exclude>node/**</exclude>
                            <exclude>**/resources/routes.1</exclude>
                            <exclude>**/resources/routes.2</exclude>
                            <exclude>**/generated/**</exclude>
                            <exclude>.envrc</exclude>
                            <exclude>**/.idea/**</exclude>
                            <exclude>**/k8s-sb/**</exclude>
                        </excludes>
                        <mapping>
                            <groovy>SLASHSTAR_STYLE</groovy>
                            <java>SLASHSTAR_STYLE</java>
                            <Jenkinsfile>SLASHSTAR_STYLE</Jenkinsfile>
                            <Jenkinsfile.quarkus>SLASHSTAR_STYLE</Jenkinsfile.quarkus>
                            <properties>CAMEL_PROPERTIES_STYLE</properties>
                            <rnc>SCRIPT_STYLE</rnc>
                            <ini>SCRIPT_STYLE</ini>
                            <rng>XML_STYLE</rng>
                            <spring.factories>CAMEL_PROPERTIES_STYLE</spring.factories>
                            <spring.provides>CAMEL_PROPERTIES_STYLE</spring.provides>
                            <tm>CAMEL_PROPERTIES_STYLE</tm>
                            <kt>SLASHSTAR_STYLE</kt>
                            <wsdl>XML_STYLE</wsdl>
                        </mapping>
                        <headerDefinitions>
                            <headerDefinition>license-properties-headerdefinition.xml</headerDefinition>
                        </headerDefinitions>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.camel</groupId>
                            <artifactId>camel-buildtools</artifactId>
                            <version>${camel.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.l2x6.cq</groupId>
                <artifactId>cq-maven-plugin</artifactId>
                <inherited>false</inherited>
                <!-- Settings for stubbing new extensions. E.g. to add a new extension to support an imaginary
                     Camel Foo ABC component, you would run

                       mvn cq:create -N -Dcq.artifactIdBase=foo-abc

                -->
                <configuration>
                    <templatesUriBase>file:///${project.basedir}/tooling/create-extension-templates</templatesUriBase>
                    <extensionDirs>
                        <extensionDir>
                            <path>extensions</path>
                            <artifactIdPrefix>camel-quarkus-</artifactIdPrefix>
                        </extensionDir>
                        <extensionDir>
                            <path>extensions-core</path>
                            <artifactIdPrefix>camel-quarkus-</artifactIdPrefix>
                        </extensionDir>
                        <extensionDir>
                            <path>extensions-jvm</path>
                            <artifactIdPrefix>camel-quarkus-</artifactIdPrefix>
                        </extensionDir>
                        <extensionDir>
                            <path>extensions-support</path>
                            <artifactIdPrefix>camel-quarkus-support-</artifactIdPrefix>
                        </extensionDir>
                        <extensionDir>
                            <path>integration-tests-support</path>
                            <artifactIdPrefix>camel-quarkus-integration-test-support-</artifactIdPrefix>
                        </extensionDir>
                    </extensionDirs>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>enforce-maven-version</id>
                        <!-- enforce-maven-version is defined in org.apache:apache -->
                        <!-- we skip for the whole Camel Quarkus tree because we have -->
                        <!-- an analogous check in camel-quarkus-enforcer-rules -->
                        <phase>none</phase>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <executions>
                    <execution>
                        <id>default-test</id>
                        <phase /><!-- unbound here to speedup -Dquickly build; bound to a phase in camel-quarkus-build-parent-it -->
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-descriptor</id>
                        <phase /><!-- skip to save time -->
                    </execution>
                </executions>
            </plugin>

        </plugins>

    </build>

    <profiles>
        <profile>
            <!-- Pass '-Dquickly' to skip enforcer and some further sanity checks -->
            <id>full</id>
            <activation>
                <property>
                    <name>!quickly</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>camel-quarkus-enforcer-rules</id>
                                <goals>
                                    <goal>enforce</goal>
                                </goals>
                                <configuration>
                                    <rules>
                                        <requireJavaVersion>
                                            <version>11</version>
                                        </requireJavaVersion>
                                        <dependencyConvergence />
                                        <requireMavenVersion>
                                            <version>${supported-maven-versions}</version>
                                        </requireMavenVersion>
                                    </rules>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.gmaven</groupId>
                        <artifactId>groovy-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>validate-github-workflows</id>
                                <inherited>false</inherited>
                                <goals>
                                    <goal>execute</goal>
                                </goals>
                                <phase>process-resources</phase>
                                <configuration>
                                    <source>file:///${project.basedir}/tooling/scripts/validate-github-workflows.groovy</source>
                                </configuration>
                            </execution>
                            <execution>
                                <id>validate-extension-metadata</id>
                                <inherited>false</inherited>
                                <goals>
                                    <goal>execute</goal>
                                </goals>
                                <phase>verify</phase>
                                <configuration>
                                    <source>file:///${project.basedir}/tooling/scripts/validate-extension-metadata.groovy</source>
                                    <properties>
                                        <extensionDirs>extensions-core,extensions-support,extensions</extensionDirs>
                                    </properties>
                                </configuration>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.yaml</groupId>
                                <artifactId>snakeyaml</artifactId>
                                <version>${snakeyaml.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>linux</id>
            <activation>
                <os>
                    <name>Linux</name>
                </os>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <systemProperties>
                                <java.security.egd>file:/dev/./urandom</java.security.egd>
                            </systemProperties>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>format</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.mycila</groupId>
                        <artifactId>license-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>license-format</id>
                                <goals>
                                    <goal>format</goal>
                                </goals>
                                <phase>validate</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.l2x6.cq</groupId>
                        <artifactId>cq-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>sort-poms</id>
                                <inherited>false</inherited>
                                <goals>
                                    <goal>format</goal>
                                    <goal>update-quarkus-metadata</goal>
                                </goals>
                                <phase>process-resources</phase>
                                <configuration>
                                    <sortModulesPaths>
                                        <sortModulesPath>extensions/pom.xml</sortModulesPath>
                                        <sortModulesPath>extensions-jvm/pom.xml</sortModulesPath>
                                        <sortModulesPath>integration-tests/pom.xml</sortModulesPath>
                                        <sortModulesPath>integration-test-groups/pom.xml</sortModulesPath>
                                        <sortModulesPath>integration-test-groups/aws2/pom.xml</sortModulesPath>
                                        <sortModulesPath>integration-test-groups/azure/pom.xml</sortModulesPath>
                                        <sortModulesPath>integration-test-groups/foundation/pom.xml</sortModulesPath>
                                    </sortModulesPaths>
                                    <sortDependencyManagementPaths>
                                        <sortDependencyManagementPath>poms/bom/pom.xml</sortDependencyManagementPath>
                                    </sortDependencyManagementPaths>
                                    <updateVirtualDependencies>
                                        <updateVirtualDependency>
                                            <basedir>${project.basedir}</basedir>
                                            <includes>
                                                <include>extensions-jvm/*/integration-test/pom.xml</include>
                                                <include>integration-tests/*/pom.xml</include>
                                                <include>integration-test-groups/*/*/pom.xml</include>
                                            </includes>
                                        </updateVirtualDependency>
                                    </updateVirtualDependencies>
                                    <updateVirtualDependenciesAllExtensions>
                                        <updateVirtualDependenciesAllExtension>
                                            <basedir>${project.basedir}</basedir>
                                            <includes>
                                                <include>catalog/pom.xml</include>
                                            </includes>
                                        </updateVirtualDependenciesAllExtension>
                                    </updateVirtualDependenciesAllExtensions>
                                    <extensionDirs>
                                        <extensionDir>
                                            <path>extensions</path>
                                            <artifactIdPrefix>camel-quarkus-</artifactIdPrefix>
                                        </extensionDir>
                                        <extensionDir>
                                            <path>extensions-core</path>
                                            <artifactIdPrefix>camel-quarkus-</artifactIdPrefix>
                                        </extensionDir>
                                        <extensionDir>
                                            <path>extensions-jvm</path>
                                            <artifactIdPrefix>camel-quarkus-</artifactIdPrefix>
                                        </extensionDir>
                                        <extensionDir>
                                            <path>extensions-support</path>
                                            <artifactIdPrefix>camel-quarkus-support-</artifactIdPrefix>
                                        </extensionDir>
                                        <extensionDir>
                                            <path>integration-tests-support</path>
                                            <artifactIdPrefix>camel-quarkus-integration-test-support-</artifactIdPrefix>
                                        </extensionDir>
                                    </extensionDirs>
                                    <removeEmptyApplicationProperties>
                                        <directory>${basedir}</directory>
                                        <includes>
                                            <include>integration-tests/*/src/main/resources/application.properties</include>
                                            <include>integration-test-groups/*/*/src/main/resources/application.properties</include>
                                        </includes>
                                    </removeEmptyApplicationProperties>
                                    <mergePoms>
                                        <mergePom>
                                            <sourcePoms>
                                                <directory>${basedir}/integration-test-groups/aws2</directory>
                                                <includes>
                                                    <include>*/pom.xml</include>
                                                </includes>
                                            </sourcePoms>
                                            <destinationPom>${basedir}/integration-tests/aws2-grouped/pom.xml</destinationPom>
                                        </mergePom>
                                        <mergePom>
                                            <sourcePoms>
                                                <directory>${basedir}/integration-test-groups/azure</directory>
                                                <includes>
                                                    <include>*/pom.xml</include>
                                                </includes>
                                            </sourcePoms>
                                            <destinationPom>${basedir}/integration-tests/azure-grouped/pom.xml</destinationPom>
                                        </mergePom>
                                        <mergePom>
                                            <sourcePoms>
                                                <directory>${basedir}/integration-test-groups/foundation</directory>
                                                <includes>
                                                    <include>*/pom.xml</include>
                                                </includes>
                                            </sourcePoms>
                                            <destinationPom>${basedir}/integration-tests/foundation-grouped/pom.xml</destinationPom>
                                        </mergePom>
                                    </mergePoms>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>check-format</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.mycila</groupId>
                        <artifactId>license-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>license-format</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>validate</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>camel-quarkus-enforcer-rules</id>
                                <phase /><!-- Speedup the check-format profile by skipping the enforcer  -->
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>apache-release</id>
            <activation>
                <property>
                    <name>apache-release</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>${maven-assembly-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>source-release-assembly</id>
                                <phase /><!-- fix https://github.com/apache/camel-quarkus/issues/844 -->
                            </execution>
                            <execution>
                                <id>camel-quarkus-source-release-assembly</id>
                                <phase>package</phase>
                                <inherited>false</inherited>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>tooling/descriptors/src.xml</descriptor>
                                    </descriptors>
                                    <tarLongFileMode>gnu</tarLongFileMode>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- We want to deploy the artifact to a staging location for perusal -->
                    <plugin>
                        <inherited>true</inherited>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <version>${maven-deploy-plugin.version}</version>
                        <configuration>
                            <updateReleaseInfo>true</updateReleaseInfo>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>${maven-source-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <additionalOptions>${javadoc.opts}</additionalOptions>
                            <detectOfflineLinks>false</detectOfflineLinks>
                        </configuration>
                    </plugin>
                    <!-- We want to sign the artifact, the POM, and all attached artifacts -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${maven-gpg-plugin.version}</version>
                        <configuration>
                            <passphrase>${gpg.passphrase}</passphrase>
                            <useAgent>${gpg.useagent}</useAgent>
                        </configuration>
                        <executions>
                            <execution>
                                <id>sign-release-artifacts</id>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>deploy</id>
            <activation>
                <property>
                    <name>deploy</name>
                </property>
            </activation>
            <build>
                <defaultGoal>deploy</defaultGoal>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                                <configuration>
                                    <additionalOptions>${javadoc.opts}</additionalOptions>
                                    <detectOfflineLinks>false</detectOfflineLinks>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>doclint-java8-disable</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <properties>
                <javadoc.opts>-Xdoclint:none</javadoc.opts>
            </properties>
        </profile>

        <profile>
            <id>docker</id>
            <activation>
                <property>
                    <name>docker</name>
                </property>
            </activation>
            <properties>
                <quarkus.native.container-build>true</quarkus.native.container-build>
                <quarkus.native.container-runtime>docker</quarkus.native.container-runtime>
            </properties>
        </profile>

        <profile>
            <id>apache-snapshots</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <repositories>
                <repository>
                    <id>apache.snapshots</id>
                    <url>https://repository.apache.org/snapshots/</url>
                    <name>Apache Snapshot Repo</name>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>apache.snapshots</id>
                    <url>https://repository.apache.org/snapshots/</url>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                </pluginRepository>
            </pluginRepositories>
        </profile>

        <profile>
            <id>oss-snapshots</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <repositories>
                <repository>
                    <id>oss-snapshots-repo</id>
                    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>oss-snapshots-repo</id>
                    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>

        <profile>
            <id>build-notification</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.gmaven</groupId>
                        <artifactId>groovy-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>build-notify</id>
                                <inherited>false</inherited>
                                <goals>
                                    <goal>execute</goal>
                                </goals>
                                <phase>verify</phase>
                                <configuration>
                                    <source>file:///${project.basedir}/tooling/scripts/report-build-status.groovy</source>
                                </configuration>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.kohsuke</groupId>
                                <artifactId>github-api</artifactId>
                                <version>${github-api.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
