<?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.quarkus</groupId>
        <artifactId>camel-quarkus</artifactId>
        <version>2.12.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>camel-quarkus-integration-tests</artifactId>
    <packaging>pom</packaging>

    <name>Camel Quarkus :: Integration Tests</name>

    <properties>
        <quarkus.banner.enabled>false</quarkus.banner.enabled>
    </properties>

    <modules>
        <!-- build those first -->
        <module>foundation-grouped</module>
        <module>core-discovery-disabled</module>
        <module>main</module>
        <module>main-devmode</module>
        <module>main-discovery-disabled</module>
        <module>main-xml-jaxb</module>
        <module>main-xml-io</module>
        <module>main-collector</module>
        <module>main-caffeine-lrucache</module>
        <module>main-command-mode</module>
        <module>main-unknown-args-fail</module>
        <module>main-unknown-args-ignore</module>
        <module>main-yaml</module>

        <!-- extensions a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
        <module>activemq</module>
        <module>amqp</module>
        <module>arangodb</module>
        <module>as2</module>
        <module>atlasmap</module>
        <module>avro</module>
        <module>avro-rpc</module>
        <module>aws2</module>
        <module>aws2-grouped</module>
        <module>aws2-quarkus-client-grouped</module>
        <module>azure-grouped</module>
        <module>base64</module>
        <module>bean-validator</module>
        <module>bindy</module>
        <module>box</module>
        <module>braintree</module>
        <module>caffeine</module>
        <module>cassandraql</module>
        <module>cbor</module>
        <module>compression-grouped</module>
        <module>consul</module>
        <module>couchdb</module>
        <module>crypto</module>
        <module>csimple</module>
        <module>csv</module>
        <module>cxf-soap</module>
        <module>dataformat</module>
        <module>dataformats-json</module>
        <module>datasonnet</module>
        <module>debezium</module>
        <module>digitalocean</module>
        <module>disruptor</module>
        <module>dozer</module>
        <module>dropbox</module>
        <module>elasticsearch-rest</module>
        <module>exec</module>
        <module>fhir</module>
        <module>file</module>
        <module>flatpack</module>
        <module>fop</module>
        <module>freemarker</module>
        <module>ftp</module>
        <module>geocoder</module>
        <module>git</module>
        <module>github</module>
        <module>google</module>
        <module>google-bigquery</module>
        <module>google-pubsub</module>
        <module>google-storage</module>
        <module>graphql</module>
        <module>grok</module>
        <module>grpc</module>
        <module>hazelcast</module>
        <module>headersmap</module>
        <module>hl7</module>
        <module>http</module>
        <module>infinispan</module>
        <module>influxdb</module>
        <module>jackson-avro</module>
        <module>jackson-protobuf</module>
        <module>jaxb</module>
        <module>jdbc</module>
        <module>jfr</module>
        <module>jira</module>
        <module>jms-artemis-client</module>
        <module>jms-qpid-amqp-client</module>
        <module>jolt</module>
        <module>jpa</module>
        <module>jq</module>
        <module>js-dsl</module>
        <module>jsch</module>
        <module>jslt</module>
        <module>json-validator</module>
        <module>jsonata</module>
        <module>jsonpath</module>
        <module>jta</module>
        <module>kafka</module>
        <module>kafka-oauth</module>
        <module>kafka-sasl</module>
        <module>kafka-sasl-ssl</module>
        <module>kafka-ssl</module>
        <module>kamelet</module>
        <module>kotlin</module>
        <module>kubernetes</module>
        <module>kudu</module>
        <module>leveldb</module>
        <module>lra</module>
        <module>lumberjack</module>
        <module>mail</module>
        <module>master</module>
        <module>messaging</module>
        <module>micrometer</module>
        <module>microprofile</module>
        <module>minio</module>
        <module>mllp</module>
        <module>mongodb-grouped</module>
        <module>mustache</module>
        <module>mybatis</module>
        <module>nats</module>
        <module>netty</module>
        <module>nitrite</module>
        <module>oaipmh</module>
        <module>olingo4</module>
        <module>openapi-java</module>
        <module>openstack</module>
        <module>opentelemetry</module>
        <module>opentracing</module>
        <module>optaplanner</module>
        <module>paho</module>
        <module>paho-mqtt5</module>
        <module>pdf</module>
        <module>pg-replication-slot</module>
        <module>pgevent</module>
        <module>platform-http</module>
        <module>protobuf</module>
        <module>pubnub</module>
        <module>quartz</module>
        <module>quartz-clustered</module>
        <module>qute</module>
        <module>rabbitmq</module>
        <module>reactive-streams</module>
        <module>rest</module>
        <module>rest-openapi</module>
        <module>saga</module>
        <module>salesforce</module>
        <module>sap-netweaver</module>
        <module>saxon</module>
        <module>servicenow</module>
        <module>servlet</module>
        <module>shiro</module>
        <module>sjms-artemis-client</module>
        <module>sjms-qpid-amqp-client</module>
        <module>sjms2-artemis-client</module>
        <module>sjms2-qpid-amqp-client</module>
        <module>slack</module>
        <module>smallrye-reactive-messaging</module>
        <module>soap</module>
        <module>solr</module>
        <module>splunk</module>
        <module>spring-rabbitmq</module>
        <module>sql</module>
        <module>ssh</module>
        <module>stax</module>
        <module>stringtemplate</module>
        <module>syndication</module>
        <module>syslog</module>
        <module>tarfile</module>
        <module>telegram</module>
        <module>tika</module>
        <module>twilio</module>
        <module>twitter</module>
        <module>univocity-parsers</module>
        <module>validator</module>
        <module>velocity</module>
        <module>vertx</module>
        <module>vertx-websocket</module>
        <module>weather</module>
        <module>xchange</module>
        <module>xml</module>
        <module>xmlsecurity</module>
        <module>xpath</module>
        <module>xstream</module>
        <module>zendesk</module>
    </modules>

</project>
