<?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-build-parent-it</artifactId>
        <version>1.7.0-SNAPSHOT</version>
        <relativePath>../poms/build-parent-it/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>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.quarkus</groupId>
                <artifactId>quarkus-junit5-internal</artifactId>
                <version>${quarkus.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <modules>
        <!-- build those first -->
        <module>core</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>

        <!-- 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>avro</module>
        <module>avro-rpc</module>
        <module>aws</module>
        <module>aws2</module>
        <module>azure</module>
        <module>azure-storage-blob</module>
        <module>base64</module>
        <module>bean</module>
        <module>bean-validator</module>
        <module>bindy</module>
        <module>box</module>
        <module>braintree</module>
        <module>caffeine</module>
        <module>compression</module>
        <module>consul</module>
        <module>couchdb</module>
        <module>crypto</module>
        <module>csimple</module>
        <module>csv</module>
        <module>dataformat</module>
        <module>dataformats-json</module>
        <module>debezium</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>foundation</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>graphql</module>
        <module>grok</module>
        <module>grpc</module>
        <module>hazelcast</module>
        <module>headersmap</module>
        <module>http</module>
        <module>hystrix</module>
        <module>infinispan</module>
        <module>influxdb</module>
        <module>jaxb</module>
        <module>jdbc</module>
        <module>jing</module>
        <module>jira</module>
        <module>jolt</module>
        <module>jpa</module>
        <module>jsch</module>
        <module>jslt</module>
        <module>json-validator</module>
        <module>jsonata</module>
        <module>jsonpath</module>
        <module>jta</module>
        <module>kafka</module>
        <module>kotlin</module>
        <module>kubernetes</module>
        <module>kudu</module>
        <module>leveldb</module>
        <module>lumberjack</module>
        <module>mail</module>
        <module>master</module>
        <module>messaging</module>
        <module>micrometer</module>
        <module>microprofile</module>
        <module>minio</module>
        <module>mongodb</module>
        <module>msv</module>
        <module>mustache</module>
        <module>nagios</module>
        <module>nats</module>
        <module>netty</module>
        <module>nsq</module>
        <module>olingo4</module>
        <module>openapi-java</module>
        <module>opentracing</module>
        <module>optaplanner</module>
        <module>pdf</module>
        <module>pg-replication-slot</module>
        <module>pgevent</module>
        <module>platform-http</module>
        <module>platform-http-engine</module>
        <module>protobuf</module>
        <module>quartz</module>
        <module>qute</module>
        <module>rabbitmq</module>
        <module>reactive-streams</module>
        <module>rest</module>
        <module>rest-binding-mode-xml</module>
        <module>rest-openapi</module>
        <module>saga</module>
        <module>salesforce</module>
        <module>sap-netweaver</module>
        <module>send-dynamic-http</module>
        <module>servicenow</module>
        <module>servlet</module>
        <module>shiro</module>
        <module>slack</module>
        <module>smallrye-reactive-messaging</module>
        <module>soap</module>
        <module>solr</module>
        <module>sql</module>
        <module>ssh</module>
        <module>stringtemplate</module>
        <module>syndication</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-kafka</module>
        <module>vertx-websocket</module>
        <module>weather</module>
        <module>websocket-jsr356</module>
        <module>xml</module>
        <module>xstream</module>
        <module>zendesk</module>
    </modules>

</project>
