<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>quarkus-build-parent</artifactId>
        <groupId>io.quarkus</groupId>
        <version>3.32.1</version>
        <relativePath>../build-parent/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>quarkus-extensions-parent</artifactId>
    <name>Quarkus - Extensions - Parent pom</name>
    <packaging>pom</packaging>
    <modules>
        <module>virtual-threads</module>
        <module>tls-registry</module>
        <module>proxy-registry</module>

        <!-- Plumbing -->
        <module>arc</module>
        <module>scheduler</module>
        <module>quartz</module>
        <module>jaxp</module>
        <module>smallrye-stork</module>

        <!-- Configuration -->
        <module>config-yaml</module>

        <!-- Formats -->
        <module>jackson</module>
        <module>jaxb</module>
        <module>jsonp</module>
        <module>jsonb</module>
        <module>hal</module>

        <!-- HTTP -->
        <module>vertx-http</module>
        <module>devui</module>
        <module>undertow</module>
        <module>websockets</module>
        <module>websockets-next</module>
        <module>web-dependency-locator</module>
        <module>resteasy-reactive</module>
        <module>reactive-routes</module>
        <module>apache-httpclient</module>
        <module>jaxrs-spi</module>

        <!-- Monitoring -->
        <module>smallrye-health</module>
        <module>smallrye-fault-tolerance</module>
        <module>micrometer</module>
        <module>micrometer-registry-prometheus</module>
        <module>micrometer-opentelemetry</module>
        <module>opentelemetry</module>
        <module>info</module>
        <module>observability-devservices</module>
        <module>jfr</module>
        <module>load-shedding</module>

        <!-- REST services -->
        <module>resteasy-classic</module>
        <module>smallrye-openapi-common</module>
        <module>smallrye-openapi</module>
        <module>swagger-ui</module>

        <!-- Reactive -->
        <module>mutiny</module>
        <module>vertx</module>
        <module>netty</module>
        <module>reactive-streams-operators</module>
        <module>smallrye-reactive-messaging</module>
        <module>smallrye-reactive-messaging-kafka</module>
        <module>smallrye-reactive-messaging-amqp</module>
        <module>smallrye-reactive-messaging-pulsar</module>
        <module>smallrye-reactive-messaging-mqtt</module>
        <module>smallrye-reactive-messaging-rabbitmq</module>
        <module>smallrye-context-propagation</module>
        <module>reactive-datasource</module>
        <module>reactive-db2-client</module>
        <module>reactive-pg-client</module>
        <module>reactive-mysql-client</module>
        <module>reactive-mssql-client</module>
        <module>reactive-oracle-client</module>
        <module>mailer</module>
        <module>grpc</module>
        <module>redis-client</module>
        <module>redis-cache</module>

        <!-- Data access and validation -->
        <module>transaction-annotations</module>
        <module>narayana-jta</module>
        <module>narayana-stm</module>
        <module>narayana-lra</module>
        <module>datasource</module>
        <module>agroal</module>
        <module>jdbc</module>
        <module>hibernate-orm</module>
        <module>hibernate-envers</module>
        <module>hibernate-reactive</module>
        <module>hibernate-validator</module>
        <module>panache</module>
        <module>hibernate-search-backend-elasticsearch-common</module>
        <module>hibernate-search-orm-elasticsearch</module>
        <module>hibernate-search-orm-outbox-polling</module>
        <module>hibernate-search-standalone-elasticsearch</module>
        <module>elasticsearch-rest-client-common</module>
        <module>elasticsearch-rest-client</module>
        <module>elasticsearch-java-client</module>
        <module>kafka-client</module>
        <module>kafka-streams</module>
        <module>mongodb-client</module>
        <module>avro</module>
        <module>schema-registry</module>
        <module>devservices</module>

        <!-- Spring -->
        <module>spring-di</module>
        <module>spring-web</module>
        <module>spring-data-jpa</module>
        <module>spring-security</module>
        <module>spring-boot-properties</module>
        <module>spring-cloud-config-client</module>
        <module>spring-cache</module>
        <module>spring-scheduled</module>
        <module>spring-data-rest</module>

        <!-- Security -->
        <module>security</module>
        <module>security-jpa</module>
        <module>security-jpa-reactive</module>
        <module>security-jpa-common</module>
        <module>security-webauthn</module>
        <module>elytron-security-common</module>
        <module>elytron-security</module>
        <module>elytron-security-jdbc</module>
        <module>elytron-security-ldap</module>
        <module>elytron-security-properties-file</module>
        <module>elytron-security-oauth2</module>
        <module>smallrye-jwt-build</module>
        <module>smallrye-jwt</module>
        <module>oidc-common</module>
        <module>oidc</module>
        <module>oidc-client</module>
        <module>oidc-client-filter</module>
        <module>oidc-client-reactive-filter</module>
        <module>oidc-client-registration</module>
        <module>oidc-client-graphql</module>
        <module>oidc-token-propagation-common</module>
        <module>oidc-token-propagation</module>
        <module>oidc-token-propagation-reactive</module>
        <module>oidc-db-token-state-manager</module>
        <module>oidc-redis-token-state-manager</module>
        <module>keycloak-authorization</module>
        <module>keycloak-admin-client-common</module>
        <module>keycloak-admin-rest-client</module>
        <module>keycloak-admin-resteasy-client</module>
        <module>credentials</module>

        <!-- SBOM -->
        <module>cyclonedx</module>

        <!-- Infinispan -->
        <module>infinispan-client</module>
        <module>infinispan-cache</module>

        <!-- Caching -->
        <module>caffeine</module>
        <module>cache</module>

        <!-- Integrations -->
        <module>amazon-lambda</module>
        <module>amazon-lambda-xray</module>
        <!-- AWS API Gateway HTTP API -->
        <module>amazon-lambda-http</module>
        <!-- AWS API Gateway REST API -->
        <module>amazon-lambda-rest</module>
        <module>azure-functions</module>
        <module>azure-functions-http</module>

        <!-- New Frameworks -->
        <module>funqy</module>

        <!-- Additional languages -->
        <module>kotlin</module>
        <module>scala</module>

        <!-- Kubernetes -->
        <module>container-image</module>
        <module>kubernetes</module>
        <module>kubernetes-client</module>
        <module>kubernetes-config</module>
        <module>openshift-client</module>
        <module>kubernetes-service-binding</module>

        <!-- Database migrations -->
        <module>flyway</module>
        <module>flyway-postgresql</module>
        <module>flyway-oracle</module>
        <module>flyway-mysql</module>
        <module>flyway-mssql</module>
        <module>flyway-db2</module>
        <module>liquibase</module>

        <!-- GraphQL -->
        <module>vertx-graphql</module>
        <module>smallrye-graphql</module>
        <module>smallrye-graphql-client</module>

        <!-- Logging -->
        <module>logging-json</module>
        <module>logging-gelf</module>

        <!-- Templating -->
        <module>qute</module>

        <!-- Command line -->
        <module>picocli</module>
        <module>google-cloud-functions-http</module>
        <module>google-cloud-functions</module>
        <module>grpc-common</module>

        <module>awt</module>

        <!-- JMS -->
        <module>jms-spi</module>
        <module>assistant</module>
    </modules>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>enforce</id>
                        <phase>${maven-enforcer-plugin.phase}</phase>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules combine.children="append">
                                <bansRuntimeDependency implementation="io.quarkus.enforcer.BansRuntimeDependency"/>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
