<?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.atleon</groupId>
        <artifactId>atleon</artifactId>
        <version>0.3.0</version>
    </parent>

    <artifactId>atleon-parent</artifactId>
    <packaging>pom</packaging>

    <properties>
        <apache-kafka.version>2.8.1</apache-kafka.version>
        <avro.version>1.10.2</avro.version>
        <confluent.version>6.2.2</confluent.version> <!-- https://docs.confluent.io/platform/current/installation/versions-interoperability.html -->
        <guava.version>20.0</guava.version>
        <jackson.version>2.12.3</jackson.version>
        <javassist.version>3.27.0-GA</javassist.version>
        <junit-jupiter.version>5.6.2</junit-jupiter.version>
        <micrometer.version>1.0.7</micrometer.version>
        <rabbitmq-amqp-client.version>5.13.1</rabbitmq-amqp-client.version>
        <reactive-streams.version>1.0.3</reactive-streams.version>
        <reactor.version>3.4.12</reactor.version>
        <reactor-kafka.version>1.3.7</reactor-kafka.version>
        <reactor-rabbitmq.version>1.5.4</reactor-rabbitmq.version>
        <scala.version>2.13.6</scala.version>
        <slf4j.version>1.7.32</slf4j.version>
        <snappy-java.version>1.1.8.1</snappy-java.version>
        <spring.version>5.3.7</spring.version>
        <zookeeper.version>3.6.3</zookeeper.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- Project Dependencies -->
            <dependency>
                <groupId>io.atleon</groupId>
                <artifactId>atleon-amqp-embedded</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.atleon</groupId>
                <artifactId>atleon-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.atleon</groupId>
                <artifactId>atleon-kafka</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.atleon</groupId>
                <artifactId>atleon-kafka-avro-embedded</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.atleon</groupId>
                <artifactId>atleon-kafka-embedded</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.atleon</groupId>
                <artifactId>atleon-util</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.atleon</groupId>
                <artifactId>atleon-zookeeper-embedded</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- Third Party Dependencies -->
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
                <!-- We don't use much from Guava, so prefer to exclude rather than manage -->
                <exclusions>
                    <exclusion>
                        <groupId>com.google.code.findbugs</groupId>
                        <artifactId>jsr305</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.rabbitmq</groupId>
                <artifactId>amqp-client</artifactId>
                <version>${rabbitmq-amqp-client.version}</version>
            </dependency>
            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-avro-serializer</artifactId>
                <version>${confluent.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-schema-registry-client</artifactId>
                <version>${confluent.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.kafka</groupId>
                        <artifactId>kafka-clients</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-schema-serializer</artifactId>
                <version>${confluent.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.micrometer</groupId>
                <artifactId>micrometer-core</artifactId>
                <version>${micrometer.version}</version>
            </dependency>
            <dependency>
                <groupId>io.projectreactor</groupId>
                <artifactId>reactor-core</artifactId>
                <version>${reactor.version}</version>
            </dependency>
            <dependency>
                <groupId>io.projectreactor</groupId>
                <artifactId>reactor-test</artifactId>
                <version>${reactor.version}</version>
            </dependency>
            <dependency>
                <groupId>io.projectreactor.kafka</groupId>
                <artifactId>reactor-kafka</artifactId>
                <version>${reactor-kafka.version}</version>
            </dependency>
            <dependency>
                <groupId>io.projectreactor.rabbitmq</groupId>
                <artifactId>reactor-rabbitmq</artifactId>
                <version>${reactor-rabbitmq.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.avro</groupId>
                <artifactId>avro</artifactId>
                <version>${avro.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>${apache-kafka.version}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>${junit-jupiter.version}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>${junit-jupiter.version}</version>
            </dependency>
            <dependency>
                <groupId>org.reactivestreams</groupId>
                <artifactId>reactive-streams</artifactId>
                <version>${reactive-streams.version}</version>
            </dependency>
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-library</artifactId>
                <version>${scala.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>log4j-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>

            <!-- Third Party Transitive Dependencies (Satisfy Upper Bounds) -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
            <dependency>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>${javassist.version}</version>
            </dependency>
            <dependency>
                <groupId>org.xerial.snappy</groupId>
                <artifactId>snappy-java</artifactId>
                <version>${snappy-java.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>