<?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.5.0</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>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>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>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>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>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-websocket</module>
        <module>weather</module>
        <module>websocket-jsr356</module>
        <module>xml</module>
        <module>xstream</module>
        <module>zendesk</module>
    </modules>

</project>
