<?xml version="1.0"?>
<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">
    <parent>
        <groupId>io.debezium</groupId>
        <artifactId>debezium-build-parent</artifactId>
        <version>3.3.2.Final</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>debezium-server-bom</artifactId>
    <version>3.3.2.Final</version>
    <name>Debezium Server BOM</name>
    <packaging>jar</packaging>

    <properties>
        <version.kinesis>2.17.241</version.kinesis>
        <version.sqs>2.13.13</version.sqs>
        <version.pubsub>26.17.0</version.pubsub>
        <version.pulsar>2.10.1</version.pulsar>
        <version.milvus>2.5.4</version.milvus>
        <version.qdrant>1.14.0</version.qdrant>
        <version.eventhubs>5.19.1</version.eventhubs>
        <version.pravega>0.13.0</version.pravega>
        <version.nats>2.21.2</version.nats>
        <version.stan>2.2.3</version.stan>
        <version.commons.logging>1.2</version.commons.logging>
        <version.jmx.exporter>1.0.1</version.jmx.exporter>

        <!-- Testing -->
        <version.junit.pioneer>2.0.1</version.junit.pioneer>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- Prometheus JMX exporter -->
            <dependency>
                <groupId>io.prometheus.jmx</groupId>
                <artifactId>jmx_prometheus_javaagent</artifactId>
                <version>${version.jmx.exporter}</version>
            </dependency>
            <!-- Aligning versions/fixing scopes -->
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>${version.commons.logging}</version>
                <scope>runtime</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>${version.kafka}</version>
            </dependency>

            <!-- This needs to be defined before Quarkus to guarantee that the
                 right Infinispan dependencies are imported -->
            <dependency>
                <groupId>org.infinispan</groupId>
                <artifactId>infinispan-bom</artifactId>
                <version>${version.infinispan}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Ehcache JAXB implementation dependency -->
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>${version.jaxb.implementation}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>txw2</artifactId>
                <version>${version.jaxb.implementation}</version>
            </dependency>

            <!-- Quarkus dependencies -->
            <dependency>
                <groupId>io.quarkus</groupId>
                <artifactId>quarkus-bom</artifactId>
                <version>${quarkus.version.runtime}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Override Quarkus default driver versions -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${version.mysql.driver}</version>
            </dependency>

            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>${version.postgresql.driver}</version>
            </dependency>

            <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongodb-driver-core</artifactId>
                <version>${version.mongo.driver}</version>
            </dependency>

            <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongodb-driver-sync</artifactId>
                <version>${version.mongo.driver}</version>
            </dependency>

            <dependency>
                <groupId>com.microsoft.sqlserver</groupId>
                <artifactId>mssql-jdbc</artifactId>
                <version>${version.sqlserver.driver}</version>
            </dependency>

            <!-- Debezium dependencies -->
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-kinesis</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-sqs</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-http</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-pubsub</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-pulsar</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-eventhubs</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-redis</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-kafka</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-pravega</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-nats-streaming</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-nats-jetstream</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-infinispan</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-rabbitmq</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-rocketmq</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-milvus</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-qdrant</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-instructlab</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-server-core</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <!-- Quarkus BOM can override apicurio deps -->
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-serdes-avro-serde</artifactId>
                <version>${version.apicurio}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-client</artifactId>
                <version>${version.apicurio}</version>
            </dependency>
            <!-- This makes sure that any version of apicurio that differs from Quarkus aligns here -->
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-serdes-jsonschema-serde</artifactId>
                <version>${version.apicurio}</version>
            </dependency>

            <!-- Target systems -->
            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>kinesis</artifactId>
                <version>${version.kinesis}</version>
            </dependency>
            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>sqs</artifactId>
                <version>${version.sqs}</version>
            </dependency>
            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>libraries-bom</artifactId>
                <version>${version.pubsub}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.pulsar</groupId>
                <artifactId>pulsar-client</artifactId>
                <version>${version.pulsar}</version>
            </dependency>
            <dependency>
                <groupId>io.milvus</groupId>
                <artifactId>milvus-sdk-java</artifactId>
                <version>${version.milvus}</version>
            </dependency>
            <dependency>
                <groupId>io.qdrant</groupId>
                <artifactId>client</artifactId>
                <version>${version.qdrant}</version>
            </dependency>
            <dependency>
                <groupId>com.azure</groupId>
                <artifactId>azure-messaging-eventhubs</artifactId>
                <version>${version.eventhubs}</version>
            </dependency>
            <dependency>
                <groupId>io.nats</groupId>
                <artifactId>jnats</artifactId>
                <version>${version.nats}</version>
            </dependency>
            <dependency>
                <groupId>io.nats</groupId>
                <artifactId>java-nats-streaming</artifactId>
                <version>${version.stan}</version>
            </dependency>
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-testing-testcontainers</artifactId>
                <version>${project.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.pravega</groupId>
                <artifactId>pravega-client</artifactId>
                <version>${version.pravega}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-client</artifactId>
                <version>${version.rocketmq}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-tools</artifactId>
                <version>${version.rocketmq}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-cli</groupId>
                        <artifactId>commons-cli</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- Testing -->
            <dependency>
                <groupId>io.debezium</groupId>
                <artifactId>debezium-testing-system</artifactId>
                <version>${project.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit-pioneer</groupId>
                <artifactId>junit-pioneer</artifactId>
                <version>${version.junit.pioneer}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>localstack</artifactId>
                <version>1.19.3</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${version.mockito}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>
