<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>io.smallrye.reactive</groupId>
        <artifactId>smallrye-reactive-utilities-projects</artifactId>
        <version>2.2.0</version>
    </parent>

    <artifactId>vertx-mutiny-clients</artifactId>
    <name>SmallRye Mutiny - Client APIs</name>
    <packaging>pom</packaging>

    <modules>
        <module>vertx-mutiny-runtime</module>
        <module>vertx-mutiny-generator</module>
        <module>vertx-mutiny-core</module>
        <module>vertx-mutiny-mail-client</module>
        <module>vertx-mutiny-bridge-common</module>
        <module>vertx-mutiny-web-common</module>
        <module>vertx-mutiny-web</module>
        <module>vertx-mutiny-web-client</module>
        <module>vertx-mutiny-mongo-client</module>
        <module>vertx-mutiny-redis-client</module>
        <module>vertx-mutiny-cassandra-client</module>
        <module>vertx-mutiny-consul-client</module>
        <module>vertx-mutiny-kafka-client</module>
        <module>vertx-mutiny-amqp-client</module>
        <module>vertx-mutiny-rabbitmq-client</module>
        <module>vertx-mutiny-sql-client</module>
        <module>vertx-mutiny-db2-client</module>
        <module>vertx-mutiny-pg-client</module>
        <module>vertx-mutiny-mysql-client</module>
        <module>vertx-mutiny-mqtt</module>
        <module>vertx-mutiny-auth-common</module>
        <module>vertx-mutiny-auth-jwt</module>
        <module>vertx-mutiny-auth-oauth2</module>
        <module>vertx-mutiny-auth-htdigest</module>
        <module>vertx-mutiny-auth-htpasswd</module>
        <module>vertx-mutiny-auth-mongo</module>
        <module>vertx-mutiny-auth-shiro</module>
        <module>vertx-mutiny-auth-webauthn</module>
        <module>vertx-mutiny-auth-properties</module>
        <module>vertx-mutiny-auth-ldap</module>
        <module>vertx-mutiny-auth-jdbc</module>
        <module>vertx-mutiny-auth-sql-client</module>
        <module>vertx-mutiny-health-checks</module>
        <module>vertx-mutiny-jdbc-client</module>
        <module>vertx-mutiny-json-schema</module>
        <module>vertx-mutiny-web-validation</module>
        <module>vertx-mutiny-web-openapi</module>
        <module>vertx-mutiny-web-templ-freemarker</module>
        <module>vertx-mutiny-web-templ-handlebars</module>
        <module>vertx-mutiny-web-templ-jade</module>
        <module>vertx-mutiny-web-templ-mvel</module>
        <module>vertx-mutiny-web-templ-pebble</module>
        <module>vertx-mutiny-web-templ-rocker</module>
        <module>vertx-mutiny-web-templ-thymeleaf</module>
        <module>vertx-mutiny-web-graphql</module>
        <module>vertx-mutiny-circuit-breaker</module>
        <module>vertx-mutiny-stomp</module>
        <module>vertx-mutiny-config</module>
        <module>vertx-mutiny-sql-client-templates</module>
        <module>vertx-mutiny-shell</module>
        <module>vertx-mutiny-micrometer-metrics</module>
        <module>vertx-mutiny-tcp-eventbus-bridge</module>
        <module>vertx-mutiny-service-discovery</module>
        <module>vertx-mutiny-service-discovery-backend-consul</module>
        <module>vertx-mutiny-service-discovery-backend-redis</module>
        <module>vertx-mutiny-service-discovery-backend-zookeeper</module>
        <module>vertx-mutiny-service-discovery-bridge-consul</module>
        <module>vertx-mutiny-service-discovery-bridge-docker</module>
        <module>vertx-mutiny-service-discovery-bridge-docker-links</module>
        <module>vertx-mutiny-service-discovery-bridge-kubernetes</module>
        <module>vertx-mutiny-service-discovery-bridge-zookeeper</module>
    </modules>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <additionalJOption>-Xdoclint:none</additionalJOption>
                </configuration>
                <executions>
                    <execution>
                        <id>generate</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <phase>package</phase>
                    </execution>
                    <execution>
                        <id>aggregate</id>
                        <goals>
                            <goal>aggregate</goal>
                        </goals>
                        <configuration>
                            <excludePackageNames>*.impl,io.smallrye.mutiny.vertx.codegen,io.smallrye.mutiny.vertx.codegen.lang
                            </excludePackageNames>
                        </configuration>
                        <phase>pre-site</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>windows</id>
            <activation>
                <os>
                    <family>Windows</family>
                </os>
            </activation>
            <properties>
                <maven.test.skip>true</maven.test.skip>
            </properties>
        </profile>

        <profile>
            <id>coverage</id>
            <properties>
                <argLine>@{jacocoArgLine}</argLine>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <!-- Generate the revapi report with mvn verify -Prevapi -DskipTests -->
            <id>revapi</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.revapi</groupId>
                        <artifactId>revapi-maven-plugin</artifactId>
                        <version>0.13.4</version>
                        <dependencies>
                            <dependency>
                                <groupId>org.revapi</groupId>
                                <artifactId>revapi-java</artifactId>
                                <version>0.23.2</version>
                            </dependency>

                            <dependency>
                                <groupId>org.revapi</groupId>
                                <artifactId>revapi-reporter-text</artifactId>
                                <version>0.13.2</version>
                            </dependency>

                            <dependency>
                                <groupId>org.revapi</groupId>
                                <artifactId>revapi-reporter-json</artifactId>
                                <version>0.3.2</version>
                            </dependency>

                        </dependencies>

                        <executions>
                            <execution>
                                <id>revapi-check</id>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                            </execution>
                        </executions>

                        <configuration>
                            <!-- Do not check for Vert.x, only focus on the client API -->
                            <checkDependencies>false</checkDependencies>
                            <generateSiteReport>false</generateSiteReport>
                            <oldVersion>2.0.0</oldVersion>
                            <newVersion>${project.version}</newVersion>

                            <analysisConfiguration>
                                <revapi.java>
                                    <missing-classes>
                                        <behavior>error</behavior>
                                        <ignoreMissingAnnotations>true</ignoreMissingAnnotations>
                                    </missing-classes>
                                    <filter>
                                        <packages>
                                            <regex>true</regex>
                                            <include>
                                                <item>io\.vertx\.mutiny\..*</item>
                                            </include>
                                        </packages>
                                    </filter>
                                </revapi.java>
                                <revapi.reporter.json>
                                    <minSeverity>NON_BREAKING</minSeverity>
                                    <output>${project.build.directory}/compatibility-report.json</output>
                                    <indent>true</indent>
                                    <keepEmptyFile>true</keepEmptyFile>
                                </revapi.reporter.json>
                            </analysisConfiguration>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
