<?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</groupId>
        <artifactId>smallrye-build-parent</artifactId>
        <version>48</version>
    </parent>

    <groupId>io.smallrye.reactive</groupId>
    <artifactId>smallrye-mutiny-vertx-bindings-projects</artifactId>
    <version>3.21.5</version>

    <packaging>pom</packaging>

    <name>SmallRye Mutiny Vert.x Bindings</name>
    <description>SmallRye Mutiny Vert.x Bindings</description>
    <url>https://smallrye.io/smallrye-mutiny-vertx-bindings</url>

    <inceptionYear>2019</inceptionYear>
    <organization>
        <name>SmallRye</name>
        <url>https://wwww.smallrye.io</url>
    </organization>

    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <issueManagement>
        <system>GitHub</system>
        <url>https://github.com/smallrye/smallrye-mutiny-vertx-bindings/issues</url>
    </issueManagement>

    <scm>
        <connection>scm:git:git@github.com:smallrye/smallrye-mutiny-vertx-bindings.git</connection>
        <developerConnection>scm:git:git@github.com:smallrye/smallrye-mutiny-vertx-bindings.git</developerConnection>
        <url>https://github.com/smallrye/smallrye-mutiny-vertx-bindings</url>
        <tag>3.21.5</tag>
    </scm>

    <developers>
        <developer>
            <id>cescoffier</id>
            <name>Clement Escoffier</name>
            <email>clement[AT]apache[DOT]org</email>
            <url>https://github.com/cescoffier</url>
        </developer>
        <developer>
            <id>jponge</id>
            <name>Julien Ponge</name>
            <email>julien[AT]ponge[DOT]org</email>
            <url>https://github.com/jponge</url>
        </developer>
    </developers>

    <properties>
        <sonar.coverage.jacoco.xmlReportPaths>target/site/jacoco/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>

        <vertx.version>4.5.25</vertx.version>
        <mutiny.version>3.1.1</mutiny.version>
        <jackson.version>2.20.1</jackson.version>
        <reactive-streams.version>1.0.4</reactive-streams.version>

        <rxjava3.version>3.1.12</rxjava3.version>
        <rxjava2.version>2.2.21</rxjava2.version>
        <rxjava1.version>1.3.8</rxjava1.version>
        <reactor-core.version>3.8.3</reactor-core.version>

        <testcontainers.version>1.21.4</testcontainers.version>

        <junit.version>4.13.2</junit.version>
        <junit-jupiter.version>5.14.3</junit-jupiter.version>
        <assertj-core.version>3.27.7</assertj-core.version>
        <slf4j-api.version>2.0.0</slf4j-api.version>
        <smallrye-common.version>2.16.0</smallrye-common.version>
        <scram-client.version>3.2</scram-client.version>

        <revapi-maven-plugin.version>0.15.1</revapi-maven-plugin.version>
        <revapi-java.version>0.28.4</revapi-java.version>
        <revapi-reporter-json.version>0.5.1</revapi-reporter-json.version>
        <revapi-reporter-text.version>0.15.1</revapi-reporter-text.version>

        <jandex-maven-plugin.version>3.5.3</jandex-maven-plugin.version>
        <cyclonedx-maven-plugin.version>2.9.1</cyclonedx-maven-plugin.version>
        <bom-builder3.version>1.3.2</bom-builder3.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>io.smallrye.reactive</groupId>
                <artifactId>mutiny</artifactId>
                <version>${mutiny.version}</version>
            </dependency>
            <dependency>
                <groupId>io.vertx</groupId>
                <artifactId>vertx-dependencies</artifactId>
                <version>${vertx.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers-bom</artifactId>
                <version>${testcontainers.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.reactivex.rxjava3</groupId>
                <artifactId>rxjava</artifactId>
                <version>${rxjava3.version}</version>
            </dependency>
            <dependency>
                <groupId>io.reactivex.rxjava2</groupId>
                <artifactId>rxjava</artifactId>
                <version>${rxjava2.version}</version>
            </dependency>
            <dependency>
                <groupId>io.reactivex</groupId>
                <artifactId>rxjava</artifactId>
                <version>${rxjava1.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.akarnokd</groupId>
                <artifactId>rxjava2-interop</artifactId>
                <version>0.13.7</version>
            </dependency>
            <dependency>
                <groupId>io.projectreactor</groupId>
                <artifactId>reactor-core</artifactId>
                <version>${reactor-core.version}</version>
            </dependency>

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>${junit-jupiter.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>${junit-jupiter.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>${junit-jupiter.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.assertj</groupId>
                <artifactId>assertj-core</artifactId>
                <version>${assertj-core.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j-api.version}</version>
                <scope>test</scope>
            </dependency>

            <dependency>
                <groupId>io.smallrye.common</groupId>
                <artifactId>smallrye-common-annotation</artifactId>
                <version>${smallrye-common.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <release>17</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>${version.release.plugin}</version>
                <configuration>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <tagNameFormat>@{project.version}</tagNameFormat>
                    <preparationGoals>verify</preparationGoals>
                    <pushChanges>false</pushChanges>
                    <localCheckout>true</localCheckout>
                    <remoteTagging>false</remoteTagging>
                    <arguments>-DskipTests ${release.arguments}</arguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>${version.gpg.plugin}</version>
                <configuration>
                    <gpgArguments>
                        <arg>--pinentry-mode</arg>
                        <arg>loopback</arg>
                    </gpgArguments>
                </configuration>
            </plugin>

            <plugin>
                <groupId>io.smallrye</groupId>
                <artifactId>jandex-maven-plugin</artifactId>
                <version>${jandex-maven-plugin.version}</version>
                <executions>
                    <execution>
                        <id>make-index</id>
                        <goals>
                            <goal>jandex</goal>
                        </goals>
                        <configuration>

                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <additionalJOption>-Xdoclint:none</additionalJOption>
                    <force>true</force>
                </configuration>
                <executions>
                    <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>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <configuration>
                    <forceCreation>true</forceCreation>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.cyclonedx</groupId>
                <artifactId>cyclonedx-maven-plugin</artifactId>
                <version>${cyclonedx-maven-plugin.version}</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>makeBom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <modules>
        <module>vertx-mutiny-clients</module>
        <module>vertx-mutiny-generator</module>
        <module>vertx-mutiny-clients-bom</module>
    </modules>

    <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>
            <id>revapi</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.revapi</groupId>
                        <artifactId>revapi-maven-plugin</artifactId>
                        <version>${revapi-maven-plugin.version}</version>
                        <dependencies>
                            <dependency>
                                <groupId>org.revapi</groupId>
                                <artifactId>revapi-java</artifactId>
                                <version>${revapi-java.version}</version>
                            </dependency>

                            <dependency>
                                <groupId>org.revapi</groupId>
                                <artifactId>revapi-reporter-text</artifactId>
                                <version>${revapi-reporter-text.version}</version>
                            </dependency>

                            <dependency>
                                <groupId>org.revapi</groupId>
                                <artifactId>revapi-reporter-json</artifactId>
                                <version>${revapi-reporter-json.version}</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>3.14.1</oldVersion>
                            <newVersion>${project.version}</newVersion>

                            <analysisConfiguration>
                                <revapi.java>
                                    <missing-classes>
                                        <behavior>ignore</behavior>
                                        <ignoreMissingAnnotations>true</ignoreMissingAnnotations>
                                    </missing-classes>
                                </revapi.java>
                                <revapi.filter>
                                    <packages>
                                        <regex>true</regex>
                                        <include>
                                            <item>io\.vertx\.mutiny\..*</item>
                                            <item>io\.vertx\.codegen\..*</item>
                                        </include>
                                    </packages>
                                </revapi.filter>
                                <revapi.ignore>
                                    <item>
                                        <code>java.class.added</code>
                                    </item>
                                </revapi.ignore>
                                <revapi.reporter.json>
                                    <minSeverity>POTENTIALLY_BREAKING</minSeverity>
                                    <criticality>highlight</criticality>
                                    <output>${project.build.directory}/compatibility-report.json</output>
                                    <indent>true</indent>
                                    <keepEmptyFile>true</keepEmptyFile>
                                </revapi.reporter.json>
                            </analysisConfiguration>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>quick-build</id>
            <activation>
                <property>
                    <name>quickly</name>
                </property>
            </activation>
            <properties>
                <skipTests>true</skipTests>
                <skipITs>true</skipITs>
                <maven.javadoc.skip>true</maven.javadoc.skip>
                <enforcer.skip>true</enforcer.skip>
                <cyclonedx.skip>true</cyclonedx.skip>
            </properties>
            <build>
                <defaultGoal>clean install</defaultGoal>
            </build>
        </profile>

    </profiles>

</project>
