<?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-parent</artifactId>
        <version>0.2.1-SNAPSHOT</version>
    </parent>

    <artifactId>camel-quarkus-extensions</artifactId>
    <packaging>pom</packaging>

    <name>Camel Quarkus :: Extensions</name>

    <modules>
        <!-- support extensions -->
        <module>support</module>

        <!-- common/shared extensions -->
        <module>xml-common</module>
        <module>core</module>
        <module>core-cloud</module>
        <module>http-common</module>
        <module>reactive-executor</module>

        <!-- extensions a..z -->
        <module>aws-eks</module>
        <module>aws-s3</module>
        <module>aws-sns</module>
        <module>aws-sqs</module>
        <module>bean</module>
        <module>csv</module>
        <module>direct</module>
        <module>infinispan</module>
        <module>jdbc</module>
        <module>log</module>
        <module>mail</module>
        <module>microprofile-health</module>
        <module>microprofile-metrics</module>
        <module>netty-http</module>
        <module>opentracing</module>
        <module>paho</module>
        <module>platform-http</module>
        <module>rest</module>
        <module>salesforce</module>
        <module>servlet</module>
        <module>tarfile</module>
        <module>timer</module>
        <module>twitter</module>
        <module>zipfile</module>
    </modules>

    <build>
        <plugins>
            <plugin>
                <groupId>io.quarkus</groupId>
                <artifactId>quarkus-maven-plugin</artifactId>
                <inherited>false</inherited>
                <!-- Setting for stubbing new extensions via
                       mvn quarkus:create-extension -N -Dquarkus.artifactIdBase=my-new-extension
                -->
                <configuration>
                    <artifactIdPrefix>camel-quarkus-</artifactIdPrefix>
                    <namePrefix xml:space="preserve">Camel Quarkus :: </namePrefix>
                    <nameSegmentDelimiter xml:space="preserve"> :: </nameSegmentDelimiter>
                    <javaPackageInfix>component</javaPackageInfix>
                    <templatesUriBase>file:///${project.basedir}/../build/create-extension-templates</templatesUriBase>
                    <runtimeBomPath>../poms/bom/pom.xml</runtimeBomPath>
                    <deploymentBomPath>../poms/bom-deployment/pom.xml</deploymentBomPath>
                    <!-- The bomEntryVersion should come with the upgrade to Quarkus 0.25
                         see https://github.com/quarkusio/quarkus/pull/4514
                    <bomEntryVersion>%{camel-quarkus.version}</bomEntryVersion> -->
                    <itestParentPath>../integration-tests/pom.xml</itestParentPath>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
