<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2019, 2025 Oracle and/or its affiliates.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>io.helidon</groupId>
        <artifactId>helidon-bom</artifactId>
        <version>4.2.0</version>
        <relativePath>../bom/pom.xml</relativePath>
    </parent>
    <artifactId>helidon-dependencies</artifactId>
    <packaging>pom</packaging>

    <name>Helidon Dependencies</name>
    <description>Maven dependency management for Helidon applications</description>

    <properties>
        <!--
        Changing these versions requires approval for a new third party dependency!
        -->
        <version.lib.activemq>5.16.0</version.lib.activemq>
        <version.lib.animal-sniffer>1.18</version.lib.animal-sniffer>
        <version.lib.annotation-api>1.3.5</version.lib.annotation-api>
        <version.lib.brave-opentracing>1.0.0</version.lib.brave-opentracing>
        <version.lib.bytebuddy>1.15.10</version.lib.bytebuddy>
        <version.lib.commons-codec>1.16.0</version.lib.commons-codec>
        <version.lib.commons-logging>1.2</version.lib.commons-logging>
        <version.lib.cron-utils>9.2.1</version.lib.cron-utils>
        <version.lib.database.messaging>19.3.0.0</version.lib.database.messaging>
        <version.lib.dropwizard.metrics>4.1.36</version.lib.dropwizard.metrics>
        <version.lib.eclipselink>4.0.4</version.lib.eclipselink>
        <version.lib.el-impl>4.0.2</version.lib.el-impl>
        <version.lib.etcd4j>2.18.0</version.lib.etcd4j>
        <version.lib.failsafe>2.3.1</version.lib.failsafe>
        <version.lib.google-api-client>1.34.1</version.lib.google-api-client>
        <version.lib.google-oauth-client>1.33.3</version.lib.google-oauth-client>
        <version.lib.google-error-prone>2.3.3</version.lib.google-error-prone>
        <version.lib.google-protobuf>3.25.5</version.lib.google-protobuf>
        <version.lib.graalvm>23.1.0</version.lib.graalvm>
        <version.lib.graphql-java>22.1</version.lib.graphql-java>
        <version.lib.graphql-java.extended.scalars>22.0</version.lib.graphql-java.extended.scalars>
        <version.lib.gson>2.9.0</version.lib.gson>
        <version.lib.grpc>1.65.1</version.lib.grpc>
        <version.lib.guava>32.0.1-jre</version.lib.guava>
        <version.lib.h2>2.2.220</version.lib.h2>
        <version.lib.hamcrest>1.3</version.lib.hamcrest>
        <version.lib.handlebars>4.3.1</version.lib.handlebars>
        <version.lib.hibernate.family>6.3</version.lib.hibernate.family>
        <version.lib.hibernate>${version.lib.hibernate.family}.1.Final</version.lib.hibernate>
        <version.lib.hibernate-validator>7.0.5.Final</version.lib.hibernate-validator>
        <version.lib.hikaricp>5.0.1</version.lib.hikaricp>
        <version.lib.hystrix>1.5.18</version.lib.hystrix>
        <version.lib.jackson>2.18.1</version.lib.jackson>
        <version.lib.jakarta.activation-api>2.1.3</version.lib.jakarta.activation-api>
        <version.lib.jakarta.annotation-api>2.1.1</version.lib.jakarta.annotation-api>
        <version.lib.jakarta.cdi-api>4.0.1</version.lib.jakarta.cdi-api>
        <version.lib.jakarta.el-api>5.0.1</version.lib.jakarta.el-api>
        <version.lib.jakarta.inject>2.0.1</version.lib.jakarta.inject>
        <version.lib.jakarta.interceptor-api>2.1.0</version.lib.jakarta.interceptor-api>
        <version.lib.jakarta.jaxrs-api>3.1.0</version.lib.jakarta.jaxrs-api>
        <version.lib.jakarta.jms-api>3.1.0</version.lib.jakarta.jms-api>
        <version.lib.jakarta.jsonb-api>3.0.1</version.lib.jakarta.jsonb-api>
        <version.lib.jakarta.jsonb-tck>3.0.0</version.lib.jakarta.jsonb-tck>
        <version.lib.jakarta.jsonp-api>2.1.3</version.lib.jakarta.jsonp-api>
        <version.lib.jakarta.persistence-api>3.1.0</version.lib.jakarta.persistence-api>
        <version.lib.jakarta.transaction-api>2.0.1</version.lib.jakarta.transaction-api>
        <version.lib.jakarta.validation-api>3.0.2</version.lib.jakarta.validation-api>
        <version.lib.jakarta.websockets-api>2.1.1</version.lib.jakarta.websockets-api>
        <!-- Check Hibernate when upgrading to ensure its supplied jaxb-runtime is compatible. -->
        <version.lib.jakarta.xml.bind-api>4.0.2</version.lib.jakarta.xml.bind-api>
        <version.lib.jandex>3.1.2</version.lib.jandex>
        <version.lib.jaxb-core>4.0.3</version.lib.jaxb-core>
        <version.lib.jaxb-impl>4.0.3</version.lib.jaxb-impl>
        <version.lib.jboss.classfilewriter>1.3.0.Final</version.lib.jboss.classfilewriter>
        <version.lib.jboss.logging>3.5.3.Final</version.lib.jboss.logging>
        <version.lib.jaxb-runtime>4.0.3</version.lib.jaxb-runtime>
        <version.lib.jersey>3.1.10</version.lib.jersey>
        <version.lib.jgit>6.7.0.202309050840-r</version.lib.jgit>
        <version.lib.junit>5.9.3</version.lib.junit>
        <version.lib.junit-platform-testkit>1.11.3</version.lib.junit-platform-testkit>
        <version.lib.kafka>3.8.1</version.lib.kafka>
        <!-- Kotlin: dependency convergence requirement, we never use this directly -->
        <version.lib.kotlin>1.9.10</version.lib.kotlin>
        <version.lib.langchain4j>0.35.0</version.lib.langchain4j>
        <version.lib.langchain4j.oracle>0.1.0</version.lib.langchain4j.oracle>
        <version.lib.log4j>2.21.1</version.lib.log4j>
        <version.lib.mariadb-java-client>2.6.2</version.lib.mariadb-java-client>
        <version.lib.maven-wagon>2.10</version.lib.maven-wagon>
        <version.lib.micrometer>1.13.4</version.lib.micrometer>
        <version.lib.micrometer-prometheus>1.13.4</version.lib.micrometer-prometheus>
        <version.lib.micronaut>4.2.2</version.lib.micronaut>
        <version.lib.micronaut.validation>4.2.0</version.lib.micronaut.validation>
        <version.lib.micronaut.data>4.4.1</version.lib.micronaut.data>
        <version.lib.micronaut.sql>5.4.0</version.lib.micronaut.sql>
        <version.lib.microprofile-config>3.1</version.lib.microprofile-config>
        <!-- FIXME upgrade to 4.1 when it is released in Maven -->
        <version.lib.microprofile-fault-tolerance-api>4.0.2</version.lib.microprofile-fault-tolerance-api>
        <version.lib.microprofile-graphql>2.0</version.lib.microprofile-graphql>
        <version.lib.microprofile-health>4.0.1</version.lib.microprofile-health>
        <version.lib.microprofile-jwt>2.1</version.lib.microprofile-jwt>
        <version.lib.microprofile-metrics-api>5.1.2</version.lib.microprofile-metrics-api>
        <version.lib.microprofile-openapi-api>3.1.1</version.lib.microprofile-openapi-api>
        <version.lib.microprofile-reactive-messaging-api>3.0</version.lib.microprofile-reactive-messaging-api>
        <version.lib.microprofile-reactive-streams-operators-api>3.0</version.lib.microprofile-reactive-streams-operators-api>
        <version.lib.microprofile-reactive-streams-operators-core>3.0</version.lib.microprofile-reactive-streams-operators-core>
        <version.lib.microprofile-rest-client>3.0.1</version.lib.microprofile-rest-client>
        <version.lib.microprofile-telemetry-tck>1.1</version.lib.microprofile-telemetry-tck>
        <version.lib.microprofile-tracing>3.0</version.lib.microprofile-tracing>
        <version.lib.microprofile-lra-api>2.0</version.lib.microprofile-lra-api>
        <version.lib.microstream>08.01.01-MS-GA</version.lib.microstream>
        <version.lib.mongodb>4.10.2</version.lib.mongodb>
        <version.lib.mssql-jdbc>8.4.1.jre8</version.lib.mssql-jdbc>
        <version.lib.mysql-connector-j>8.2.0</version.lib.mysql-connector-j>
        <version.lib.narayana>7.0.0.Final</version.lib.narayana>
        <version.lib.neo4j>5.12.0</version.lib.neo4j>
        <version.lib.netty>4.1.118.Final</version.lib.netty>
        <version.lib.oci>3.57.2</version.lib.oci>
        <version.lib.ojdbc.family>23</version.lib.ojdbc.family>
        <!--
            UCP versions 21.10.0.0 and up throw NPEs. There is a test to catch them.
            Until this bug is fixed do not upgrade past version 21.9.0.0.
        -->
        <version.lib.ojdbc>${version.lib.ojdbc.family}.6.0.24.10</version.lib.ojdbc>
        <version.lib.ojdbc8>${version.lib.ojdbc}</version.lib.ojdbc8>
        <!-- Force upgrade okio for CVE-2023-3635. When okhttp 4.12.0 is available we can remove this -->
        <version.lib.okio>3.4.0</version.lib.okio>
        <!-- Force upgrade okhttp3 for CVE-2023-0833 -->
        <version.lib.okhttp3>4.11.0</version.lib.okhttp3>
        <version.lib.opentelemetry.semconv>1.29.0-alpha</version.lib.opentelemetry.semconv>
        <version.lib.opentelemetry-sdk-extension-autoconfigure>1.29.0</version.lib.opentelemetry-sdk-extension-autoconfigure>
        <version.lib.opentelemetry.opentracing.shim>1.29.0</version.lib.opentelemetry.opentracing.shim>
        <version.lib.opentelemetry>1.29.0</version.lib.opentelemetry>
        <version.lib.opentracing>0.33.0</version.lib.opentracing>
        <version.lib.opentracing.grpc>0.2.1</version.lib.opentracing.grpc>
        <version.lib.opentracing.tracerresolver>0.1.8</version.lib.opentracing.tracerresolver>
        <version.lib.perfmark-api>0.25.0</version.lib.perfmark-api>
        <version.lib.parsson>1.1.6</version.lib.parsson>
        <version.lib.postgresql>42.7.2</version.lib.postgresql>
        <version.lib.prometheus>0.16.0</version.lib.prometheus>
        <version.lib.reactivestreams>1.0.4</version.lib.reactivestreams>
        <version.lib.slf4j>2.0.16</version.lib.slf4j>
        <version.lib.smallrye-openapi>3.3.4</version.lib.smallrye-openapi>
        <version.lib.snakeyaml>2.4</version.lib.snakeyaml>
        <version.lib.testcontainers>1.19.3</version.lib.testcontainers>
        <version.lib.typesafe-config>1.4.2</version.lib.typesafe-config>
        <version.lib.tyrus>2.1.5</version.lib.tyrus>
        <version.lib.weld-api>5.0.SP3</version.lib.weld-api>
        <version.lib.weld>5.1.1.SP2</version.lib.weld>
        <version.lib.yasson>3.0.4</version.lib.yasson>
        <version.lib.zipkin.sender-urlconnection>2.16.4</version.lib.zipkin.sender-urlconnection>
        <version.lib.zipkin>2.12.5</version.lib.zipkin>
        <version.lib.zookeeper>3.5.7</version.lib.zookeeper>
        <version.lib.crac>1.4.0</version.lib.crac>
    </properties>

    <dependencyManagement>
        <!--
         IMPORTANT! These dependencies are organized into four sections. When adding
         or updating a dependency please place it in the correction section:

         Section 1: Direct third party dependencies of the Helidon toolkit. These are
                    dependencies used directly by the Helidon implementation (not
                     examples, not tests) and can be runtime dependencies of a Helidon
                     application.
         Section 2: Direct third party dependencies that are used by examples (beyond those
                    in Section 1). Might also be used in tests.
         Section 3: Transitive dependencies (or fourth party dependencies) that we
                    need to manage the version of for convergence or forced upgrade.
                    Nothing in Helidon depends on these APIs directly.
         Section 4: Dependencies used for testing only. It's preferable that these are
                    in the Helidon root project pom, but sometimes they need to be here.

         Importing of BOMs should always be at the end since we want more specific
         dependencies to override them.
        -->

        <dependencies>
            <!-- Section 0: dependencies to be removed, workaround -->
            <!-- 3.0.0-JAKARTA -->
            <dependency>
                <!-- needed for grpc, as generated code contains java.annotation.Generated -->
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
                <version>1.3.2</version>
            </dependency>
            <dependency>
                <!-- needed for MP LRA, not yet ready for jakarta packages-->
                <groupId>javax.ws.rs</groupId>
                <artifactId>javax.ws.rs-api</artifactId>
                <version>2.1.1</version>
            </dependency>

            <!-- Section 1: direct third party dependencies -->
            <dependency>
                <groupId>org.glassfish.jersey.core</groupId>
                <artifactId>jersey-server</artifactId>
                <version>${version.lib.jersey}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish.hk2.external</groupId>
                        <artifactId>jakarta.inject</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish.jersey.media</groupId>
                        <artifactId>jersey-media-jaxb</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jersey.core</groupId>
                <artifactId>jersey-client</artifactId>
                <version>${version.lib.jersey}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish.hk2.external</groupId>
                        <artifactId>jakarta.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jersey.inject</groupId>
                <artifactId>jersey-hk2</artifactId>
                <version>${version.lib.jersey}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish.hk2.external</groupId>
                        <artifactId>jakarta.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.opentelemetry</groupId>
                <artifactId>opentelemetry-semconv</artifactId>
                <version>${version.lib.opentelemetry.semconv}</version>
            </dependency>
            <dependency>
                <groupId>io.opentelemetry</groupId>
                <artifactId>opentelemetry-opentracing-shim</artifactId>
                <version>${version.lib.opentelemetry.opentracing.shim}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing</groupId>
                <artifactId>opentracing-util</artifactId>
                <version>${version.lib.opentracing}</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.annotation</groupId>
                        <artifactId>javax.annotation-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.opentelemetry.instrumentation</groupId>
                <artifactId>opentelemetry-instrumentation-annotations</artifactId>
                <version>${version.lib.opentelemetry}</version>
            </dependency>
            <dependency>
                <groupId>io.opentelemetry.instrumentation</groupId>
                <artifactId>opentelemetry-instrumentation-api</artifactId>
                <version>${version.lib.opentelemetry}</version>
            </dependency>
            <dependency>
                <groupId>io.opentelemetry</groupId>
                <artifactId>opentelemetry-sdk-extension-autoconfigure</artifactId>
                <version>${version.lib.opentelemetry-sdk-extension-autoconfigure}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing</groupId>
                <artifactId>opentracing-api</artifactId>
                <version>${version.lib.opentracing}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing</groupId>
                <artifactId>opentracing-noop</artifactId>
                <version>${version.lib.opentracing}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing.contrib</groupId>
                <artifactId>opentracing-tracerresolver</artifactId>
                <version>${version.lib.opentracing.tracerresolver}</version>
            </dependency>
            <!--
                "Jakarta XML Binding API". (See
                https://github.com/jakartaee/jaxb-api/blob/d8a68e76a5391cb2462f540c9e4c5c81d0a91942/jaxb-api/pom.xml#L23-L25)
            -->
            <dependency>
                <groupId>jakarta.xml.bind</groupId>
                <artifactId>jakarta.xml.bind-api</artifactId>
                <version>${version.lib.jakarta.xml.bind-api}</version>
            </dependency>
            <!--
                "Old JAXB Core". (See
                https://github.com/eclipse-ee4j/jaxb-ri/blob/1120e83b8bac6dfd1636e19269a36a8ccaad94e4/jaxb-ri/bundles/core/pom.xml#L25-L30.)
            -->
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-core</artifactId>
                <version>${version.lib.jaxb-core}</version>
            </dependency>
            <!--
                "Old JAXB Runtime". (See
                https://github.com/eclipse-ee4j/jaxb-ri/blob/1120e83b8bac6dfd1636e19269a36a8ccaad94e4/jaxb-ri/bundles/runtime/pom.xml#L25-L30.)
            -->
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
                <version>${version.lib.jaxb-impl}</version>
            </dependency>
            <!--
                "JAXB Runtime"/"JAXB (JSR 222) Reference Implementation". (See
                https://github.com/eclipse-ee4j/jaxb-ri/blob/1120e83b8bac6dfd1636e19269a36a8ccaad94e4/jaxb-ri/runtime/impl/pom.xml#L25-L30.)
            -->
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>${version.lib.jaxb-runtime}</version>
            </dependency>
            <dependency>
                <!-- contains the API as well -->
                <groupId>org.glassfish</groupId>
                <artifactId>jakarta.el</artifactId>
                <version>${version.lib.el-impl}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.ws.rs</groupId>
                <artifactId>jakarta.ws.rs-api</artifactId>
                <version>${version.lib.jakarta.jaxrs-api}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.enterprise</groupId>
                <artifactId>jakarta.enterprise.cdi-api</artifactId>
                <version>${version.lib.jakarta.cdi-api}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.enterprise</groupId>
                <artifactId>jakarta.enterprise.lang-model</artifactId>
                <version>${version.lib.jakarta.cdi-api}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.el</groupId>
                <artifactId>jakarta.el-api</artifactId>
                <version>${version.lib.jakarta.el-api}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.annotation</groupId>
                <artifactId>jakarta.annotation-api</artifactId>
                <version>${version.lib.jakarta.annotation-api}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.interceptor</groupId>
                <artifactId>jakarta.interceptor-api</artifactId>
                <version>${version.lib.jakarta.interceptor-api}</version>
                <exclusions>
                  <!-- Exclude EJB. See https://github.com/eclipse-ee4j/interceptor-api/issues/31 -->
                  <exclusion>
                      <groupId>jakarta.ejb</groupId>
                      <artifactId>jakarta.ejb-api</artifactId>
                  </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>jakarta.inject</groupId>
                <artifactId>jakarta.inject-api</artifactId>
                <version>${version.lib.jakarta.inject}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.json</groupId>
                <artifactId>jakarta.json-api</artifactId>
                <version>${version.lib.jakarta.jsonp-api}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.json.bind</groupId>
                <artifactId>jakarta.json.bind-api</artifactId>
                <version>${version.lib.jakarta.jsonb-api}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.activation</groupId>
                <artifactId>jakarta.activation-api</artifactId>
                <version>${version.lib.jakarta.activation-api}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jgit</groupId>
                <artifactId>org.eclipse.jgit</artifactId>
                <version>${version.lib.jgit}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.jms</groupId>
                <artifactId>jakarta.jms-api</artifactId>
                <version>${version.lib.jakarta.jms-api}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.parsson</groupId>
                <artifactId>parsson</artifactId>
                <version>${version.lib.parsson}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.parsson</groupId>
                <artifactId>parsson-media</artifactId>
                <version>${version.lib.parsson}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse</groupId>
                <artifactId>yasson</artifactId>
                <version>${version.lib.yasson}</version>
            </dependency>
            <dependency>
                <groupId>com.github.jknack</groupId>
                <artifactId>handlebars</artifactId>
                <version>${version.lib.handlebars}</version>
            </dependency>

            <!-- Config related -->
            <dependency>
                <groupId>com.typesafe</groupId>
                <artifactId>config</artifactId>
                <version>${version.lib.typesafe-config}</version>
            </dependency>
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>${version.lib.snakeyaml}</version>
            </dependency>
            <dependency>
                <groupId>org.mousio</groupId>
                <artifactId>etcd4j</artifactId>
                <version>${version.lib.etcd4j}</version>
            </dependency>

            <!-- Dependency convergence. Should align with version used by io.grpc -->
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>${version.lib.gson}</version>
            </dependency>
            <!-- Dependency convergence. Should align with version used by io.grpc -->
            <dependency>
              <groupId>io.perfmark</groupId>
              <artifactId>perfmark-api</artifactId>
              <version>${version.lib.perfmark-api}</version>
            </dependency>

            <dependency>
              <groupId>io.opentracing.contrib</groupId>
              <artifactId>opentracing-grpc</artifactId>
              <version>${version.lib.opentracing.grpc}</version>
            </dependency>

            <!-- Webserver related -->
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${version.lib.guava}</version>
            </dependency>
            <dependency>
                <groupId>io.prometheus</groupId>
                <artifactId>simpleclient</artifactId>
                <version>${version.lib.prometheus}</version>
            </dependency>
            <dependency>
                <groupId>io.prometheus</groupId>
                <artifactId>simpleclient_common</artifactId>
                <version>${version.lib.prometheus}</version>
            </dependency>
            <dependency>
                <groupId>io.prometheus</groupId>
                <artifactId>simpleclient_tracer_common</artifactId>
                <version>${version.lib.prometheus}</version>
            </dependency>
            <dependency>
                <groupId>io.zipkin.zipkin2</groupId>
                <artifactId>zipkin</artifactId>
                <version>${version.lib.zipkin}</version>
            </dependency>
            <dependency>
                <groupId>io.zipkin.reporter2</groupId>
                <artifactId>zipkin-sender-urlconnection</artifactId>
                <version>${version.lib.zipkin.sender-urlconnection}</version>
            </dependency>
            <dependency>
                <groupId>io.opentracing.brave</groupId>
                <artifactId>brave-opentracing</artifactId>
                <version>${version.lib.brave-opentracing}</version>
                <exclusions>
                    <exclusion>
                        <!-- failure in dependency convergence -->
                        <groupId>io.zipkin.reporter2</groupId>
                        <artifactId>zipkin-reporter</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>io.zipkin.brave</groupId>
                        <artifactId>brave-tests</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>io.zipkin.zipkin2</groupId>
                        <artifactId>zipkin</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>net.bytebuddy</groupId>
                <artifactId>byte-buddy</artifactId>
                <version>${version.lib.bytebuddy}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.websocket</groupId>
                <artifactId>jakarta.websocket-api</artifactId>
                <version>${version.lib.jakarta.websockets-api}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.websocket</groupId>
                <artifactId>jakarta.websocket-client-api</artifactId>
                <version>${version.lib.jakarta.websockets-api}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.tyrus</groupId>
                <artifactId>tyrus-core</artifactId>
                <version>${version.lib.tyrus}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.tyrus</groupId>
                <artifactId>tyrus-client</artifactId>
                <version>${version.lib.tyrus}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.tyrus</groupId>
                <artifactId>tyrus-container-jdk-client</artifactId>
                <version>${version.lib.tyrus}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.tyrus</groupId>
                <artifactId>tyrus-server</artifactId>
                <version>${version.lib.tyrus}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish.tyrus</groupId>
                        <artifactId>tyrus-container-grizzly-client</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- Security related -->
            <dependency>
                <!-- Google APIs -->
                <groupId>com.google.api-client</groupId>
                <artifactId>google-api-client</artifactId>
                <version>${version.lib.google-api-client}</version>
                <exclusions>
                    <!-- For dependency convergence. Defer to newer version from google-http-client -->
                    <exclusion>
                        <groupId>org.apache.httpcomponents</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                    <exclusion>
                        <!-- should be optional -->
                        <groupId>com.google.code.findbugs</groupId>
                        <artifactId>jsr305</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- For dependency convergence and force upgrade of oauth-client -->
            <dependency>
                <groupId>com.google.oauth-client</groupId>
                <artifactId>google-oauth-client</artifactId>
                <version>${version.lib.google-oauth-client}</version>
                <!-- Defer to versions from google-api-client -->
                <exclusions>
                    <exclusion>
                        <groupId>com.google.http-client</groupId>
                        <artifactId>google-http-client</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.google.http-client</groupId>
                        <artifactId>google-http-client-gson</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- DB Client related -->
            <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongodb-driver-sync</artifactId>
                <version>${version.lib.mongodb}</version>
            </dependency>
            <dependency>
                <groupId>com.oracle.database.messaging</groupId>
                <artifactId>aqapi</artifactId>
                <version>${version.lib.database.messaging}</version>
            </dependency>

            <!-- Micrometer related -->
            <dependency>
                <groupId>io.micrometer</groupId>
                <artifactId>micrometer-core</artifactId>
                <version>${version.lib.micrometer}</version>
            </dependency>
            <dependency>
                <groupId>io.micrometer</groupId>
                <artifactId>micrometer-registry-prometheus</artifactId>
                <version>${version.lib.micrometer-prometheus}</version>
            </dependency>
            <dependency>
                <groupId>io.micrometer</groupId>
                <artifactId>micrometer-registry-prometheus-simpleclient</artifactId>
                <version>${version.lib.micrometer-prometheus}</version>
            </dependency>

            <!-- Microprofile related -->
            <dependency>
                <groupId>org.eclipse.microprofile.config</groupId>
                <artifactId>microprofile-config-api</artifactId>
                <version>${version.lib.microprofile-config}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.annotation.versioning</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.health</groupId>
                <artifactId>microprofile-health-api</artifactId>
                <version>${version.lib.microprofile-health}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.annotation.versioning</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.graphql</groupId>
                <artifactId>microprofile-graphql-api</artifactId>
                <version>${version.lib.microprofile-graphql}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.annotation.versioning</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.jwt</groupId>
                <artifactId>microprofile-jwt-auth-api</artifactId>
                <version>${version.lib.microprofile-jwt}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.annotation.versioning</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.fault-tolerance</groupId>
                <artifactId>microprofile-fault-tolerance-api</artifactId>
                <version>${version.lib.microprofile-fault-tolerance-api}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.annotation.versioning</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.opentracing</groupId>
                <artifactId>microprofile-opentracing-api</artifactId>
                <version>${version.lib.microprofile-tracing}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.annotation.versioning</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.rest.client</groupId>
                <artifactId>microprofile-rest-client-api</artifactId>
                <version>${version.lib.microprofile-rest-client}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.annotation.versioning</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.inject</groupId>
                        <artifactId>javax.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.openapi</groupId>
                <artifactId>microprofile-openapi-api</artifactId>
                <version>${version.lib.microprofile-openapi-api}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.annotation.versioning</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.metrics</groupId>
                <artifactId>microprofile-metrics-api</artifactId>
                <version>${version.lib.microprofile-metrics-api}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.annotation.versioning</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.reactive-streams-operators</groupId>
                <artifactId>microprofile-reactive-streams-operators-api</artifactId>
                <version>${version.lib.microprofile-reactive-streams-operators-api}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.reactive-streams-operators</groupId>
                <artifactId>microprofile-reactive-streams-operators-core</artifactId>
                <version>${version.lib.microprofile-reactive-streams-operators-core}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.reactive.messaging</groupId>
                <artifactId>microprofile-reactive-messaging-api</artifactId>
                <version>${version.lib.microprofile-reactive-messaging-api}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.eclipse.microprofile.reactive-streams-operators</groupId>
                        <artifactId>microprofile-reactive-streams-operators-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.microprofile.reactive-streams-operators</groupId>
                        <artifactId>microprofile-reactive-streams-operators-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.lra</groupId>
                <artifactId>microprofile-lra-api</artifactId>
                <version>${version.lib.microprofile-lra-api}</version>
            </dependency>
            <dependency>
                <groupId>io.smallrye</groupId>
                <artifactId>jandex</artifactId>
                <version>${version.lib.jandex}</version>
            </dependency>
            <dependency>
                <groupId>io.smallrye</groupId>
                <artifactId>smallrye-open-api-core</artifactId>
                <version>${version.lib.smallrye-openapi}</version>
            </dependency>
            <dependency>
                <groupId>io.smallrye</groupId>
                <artifactId>smallrye-open-api-jaxrs</artifactId>
                <version>${version.lib.smallrye-openapi}</version>
            </dependency>
            <dependency>
                <groupId>io.smallrye</groupId>
                <artifactId>smallrye-open-api-ui</artifactId>
                <version>${version.lib.smallrye-openapi}</version>
            </dependency>

            <!-- Microstream related -->
            <dependency>
                <groupId>one.microstream</groupId>
                <artifactId>microstream-storage-embedded</artifactId>
                <version>${version.lib.microstream}</version>
            </dependency>
            <dependency>
                <groupId>one.microstream</groupId>
                <artifactId>microstream-storage-embedded-configuration</artifactId>
                <version>${version.lib.microstream}</version>
            </dependency>
            <dependency>
                <groupId>one.microstream</groupId>
                <artifactId>microstream-configuration</artifactId>
                <version>${version.lib.microstream}</version>
            </dependency>
            <dependency>
                <groupId>one.microstream</groupId>
                <artifactId>microstream-cache</artifactId>
                <version>${version.lib.microstream}</version>
            </dependency>
            <dependency>
                <groupId>one.microstream</groupId>
                <artifactId>microstream-persistence-binary-jdk17</artifactId>
                <version>${version.lib.microstream}</version>
            </dependency>

            <!-- Integrations related -->
            <dependency>
                <groupId>jakarta.persistence</groupId>
                <artifactId>jakarta.persistence-api</artifactId>
                <version>${version.lib.jakarta.persistence-api}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.transaction</groupId>
                <artifactId>jakarta.transaction-api</artifactId>
                <version>${version.lib.jakarta.transaction-api}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.validation</groupId>
                <artifactId>jakarta.validation-api</artifactId>
                <version>${version.lib.jakarta.validation-api}</version>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>${version.lib.h2}</version>
            </dependency>
            <dependency>
                <groupId>com.mysql</groupId>
                <artifactId>mysql-connector-j</artifactId>
                <version>${version.lib.mysql-connector-j}</version>
            </dependency>
            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>${version.lib.postgresql}</version>
            </dependency>
            <dependency>
                <groupId>com.zaxxer</groupId>
                <artifactId>HikariCP</artifactId>
                <version>${version.lib.hikaricp}</version>
            </dependency>
            <dependency>
                <!-- used by Hikari CP to add metrics -->
                <groupId>io.dropwizard.metrics</groupId>
                <artifactId>metrics-core</artifactId>
                <version>${version.lib.dropwizard.metrics}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>org.eclipse.persistence.jpa</artifactId>
                <version>${version.lib.eclipselink}</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate.orm</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>${version.lib.hibernate}</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate.validator</groupId>
                <artifactId>hibernate-validator-cdi</artifactId>
                <version>${version.lib.hibernate-validator}</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate.validator</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>${version.lib.hibernate-validator}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.narayana.jta</groupId>
                <artifactId>narayana-jta</artifactId>
                <version>${version.lib.narayana}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.narayana.jta</groupId>
                <artifactId>cdi</artifactId>
                <version>${version.lib.narayana}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.weld</groupId>
                <artifactId>weld-api</artifactId>
                <version>${version.lib.weld-api}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.weld</groupId>
                <artifactId>weld-core-impl</artifactId>
                <version>${version.lib.weld}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.weld</groupId>
                <artifactId>weld-spi</artifactId>
                <version>${version.lib.weld-api}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.weld</groupId>
                <artifactId>weld-lite-extension-translator</artifactId>
                <version>${version.lib.weld}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.jboss.weld</groupId>
                        <artifactId>weld-core-impl</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.jboss.weld.module</groupId>
                <artifactId>weld-jta</artifactId>
                <version>${version.lib.weld}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.jboss.spec.javax.transaction</groupId>
                        <artifactId>jboss-transaction-api_1.3_spec</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.jboss.weld</groupId>
                        <artifactId>weld-core-impl</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.jboss.weld.environment</groupId>
                <artifactId>weld-environment-common</artifactId>
                <version>${version.lib.weld}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.classfilewriter</groupId>
                <artifactId>jboss-classfilewriter</artifactId>
                <version>${version.lib.jboss.classfilewriter}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.logging</groupId>
                <artifactId>jboss-logging</artifactId>
                <version>${version.lib.jboss.logging}</version>
            </dependency>
            <dependency>
                <groupId>org.graalvm.sdk</groupId>
                <artifactId>nativeimage</artifactId>
                <version>${version.lib.graalvm}</version>
            </dependency>
            <dependency>
                <groupId>org.graalvm.nativeimage</groupId>
                <artifactId>svm</artifactId>
                <version>${version.lib.graalvm}</version>
            </dependency>
            <dependency>
                <groupId>com.graphql-java</groupId>
                <artifactId>graphql-java</artifactId>
                <version>${version.lib.graphql-java}</version>
            </dependency>
            <dependency>
                <groupId>com.graphql-java</groupId>
                <artifactId>graphql-java-extended-scalars</artifactId>
                <version>${version.lib.graphql-java.extended.scalars}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.squareup.okhttp3</groupId>
                        <artifactId>okhttp</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.squareup.okio</groupId>
                        <artifactId>okio</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- Kafka support -->
            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>${version.lib.kafka}</version>
            </dependency>
            <!-- Langchain4j integration -->
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-cohere</artifactId>
                <version>${version.lib.langchain4j}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-ollama</artifactId>
                <version>${version.lib.langchain4j}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-open-ai</artifactId>
                <version>${version.lib.langchain4j}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-oracle</artifactId>
                <version>${version.lib.langchain4j}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j</artifactId>
                <version>${version.lib.langchain4j}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-core</artifactId>
                <version>${version.lib.langchain4j}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib</artifactId>
                <version>${version.lib.kotlin}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib-common</artifactId>
                <version>${version.lib.kotlin}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib-jdk8</artifactId>
                <version>${version.lib.kotlin}</version>
            </dependency>
            <!-- Jersey -->
            <dependency>
                <groupId>org.glassfish.jersey.media</groupId>
                <artifactId>jersey-media-json-binding</artifactId>
                <version>${version.lib.jersey}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish.hk2.external</groupId>
                        <artifactId>jakarta.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jersey.ext.microprofile</groupId>
                <artifactId>jersey-mp-rest-client</artifactId>
                <version>${version.lib.jersey}</version>
                <exclusions>
                    <!-- most of these libraries are either bad (javax*), or we need additional exclusions on them -->
                    <exclusion>
                        <groupId>org.glassfish.jersey.core</groupId>
                        <artifactId>jersey-server</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish.jersey.core</groupId>
                        <artifactId>jersey-client</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish.jersey.inject</groupId>
                        <artifactId>jersey-hk2</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish.jersey.media</groupId>
                        <artifactId>jersey-media-json-binding</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish.jersey.ext.cdi</groupId>
                        <artifactId>jersey-cdi1x</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish</groupId>
                        <artifactId>jsonp-jaxrs</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.microprofile.config</groupId>
                        <artifactId>microprofile-config-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.el</groupId>
                        <artifactId>javax.el-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.interceptor</groupId>
                        <artifactId>javax.interceptor-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish.hk2.external</groupId>
                        <artifactId>jakarta.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- Micronaut integrations -->
            <dependency>
                <groupId>io.micronaut</groupId>
                <artifactId>micronaut-inject-java</artifactId>
                <version>${version.lib.micronaut}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut</groupId>
                <artifactId>micronaut-inject</artifactId>
                <version>${version.lib.micronaut}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut</groupId>
                <artifactId>micronaut-core</artifactId>
                <version>${version.lib.micronaut}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut</groupId>
                <artifactId>micronaut-aop</artifactId>
                <version>${version.lib.micronaut}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut</groupId>
                <artifactId>micronaut-core-processor</artifactId>
                <version>${version.lib.micronaut}</version>
            </dependency>
            <!-- Neo4j -->
            <dependency>
                <groupId>org.neo4j.driver</groupId>
                <artifactId>neo4j-java-driver</artifactId>
                <version>${version.lib.neo4j}</version>
            </dependency>
            <!-- Cron utils -->
            <dependency>
                <groupId>com.cronutils</groupId>
                <artifactId>cron-utils</artifactId>
                <version>${version.lib.cron-utils}</version>
            </dependency>
            <dependency>
                <groupId>org.reactivestreams</groupId>
                <artifactId>reactive-streams</artifactId>
                <version>${version.lib.reactivestreams}</version>
            </dependency>
            <dependency>
                <groupId>org.reactivestreams</groupId>
                <artifactId>reactive-streams-tck</artifactId>
                <version>${version.lib.reactivestreams}</version>
            </dependency>
            <dependency>
                <groupId>org.crac</groupId>
                <artifactId>crac</artifactId>
                <version>${version.lib.crac}</version>
            </dependency>
            <!-- END OF Section 1: direct third party dependencies -->

            <!-- Section 2: third party dependencies used by examples -->
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-client</artifactId>
                <version>${version.lib.activemq}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut.validation</groupId>
                <artifactId>micronaut-validation</artifactId>
                <version>${version.lib.micronaut.validation}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut.validation</groupId>
                <artifactId>micronaut-validation-processor</artifactId>
                <version>${version.lib.micronaut.validation}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut</groupId>
                <artifactId>micronaut-runtime</artifactId>
                <version>${version.lib.micronaut}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut.sql</groupId>
                <artifactId>micronaut-jdbc-hikari</artifactId>
                <version>${version.lib.micronaut.sql}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut.sql</groupId>
                <artifactId>micronaut-jdbc-ucp</artifactId>
                <version>${version.lib.micronaut.sql}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut.sql</groupId>
                <artifactId>micronaut-jdbc</artifactId>
                <version>${version.lib.micronaut.sql}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut.data</groupId>
                <artifactId>micronaut-data-tx</artifactId>
                <version>${version.lib.micronaut.data}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.code.findbugs</groupId>
                        <artifactId>jsr305</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.micronaut.data</groupId>
                <artifactId>micronaut-data-jdbc</artifactId>
                <version>${version.lib.micronaut.data}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.code.findbugs</groupId>
                        <artifactId>jsr305</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.micronaut.data</groupId>
                <artifactId>micronaut-data-processor</artifactId>
                <version>${version.lib.micronaut.data}</version>
            </dependency>
            <!-- END OF Section 2: third party dependencies used by examples -->

            <!-- Section 3: transitive dependencies we manage the version of for convergence/upgrade -->
            <dependency>
                <!-- required for dependency convergence, used from guava and perfmark-api -->
                <groupId>com.google.errorprone</groupId>
                <artifactId>error_prone_annotations</artifactId>
                <version>${version.lib.google-error-prone}</version>
            </dependency>
            <dependency>
                <!-- if needed (as excluded from weld) -->
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-all</artifactId>
                <version>${version.lib.groovy-all}</version>
            </dependency>
            <dependency>
                <!-- required for dependency convergence, transitive dependency of both
                commons-configuration (through hystrix-core)
                org.apache.httpcomponents:httpclient (through health-tck)
                -->
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>${version.lib.commons-logging}</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${version.lib.commons-codec}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut</groupId>
                <artifactId>micronaut-http</artifactId>
                <version>${version.lib.micronaut}</version>
            </dependency>
            <dependency>
                <groupId>io.micronaut.data</groupId>
                <artifactId>micronaut-data-model</artifactId>
                <version>${version.lib.micronaut.data}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.code.findbugs</groupId>
                        <artifactId>jsr305</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.micronaut.data</groupId>
                <artifactId>micronaut-data-runtime</artifactId>
                <version>${version.lib.micronaut.data}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.code.findbugs</groupId>
                        <artifactId>jsr305</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <!-- Force upgrade okhttp3 for CVE-2023-0833 -->
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>${version.lib.okhttp3}</version>
            </dependency>
            <dependency>
                <!-- Force upgrade okio for CVE-2023-3635. When okhttp 4.12.0 is available we can remove this -->
                <groupId>com.squareup.okio</groupId>
                <artifactId>okio</artifactId>
                <version>${version.lib.okio}</version>
            </dependency>
            <!-- END OF Section 3: transitive dependencies we manage the version of for convergence/upgrade -->

            <!-- Section 4: Testing -->
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>${version.lib.junit}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-params</artifactId>
                <version>${version.lib.junit}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>${version.lib.junit}</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-all</artifactId>
                <version>${version.lib.hamcrest}</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-core</artifactId>
                <version>${version.lib.hamcrest}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-testkit</artifactId>
                <version>${version.lib.junit-platform-testkit}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>${version.lib.testcontainers}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>mongodb</artifactId>
                <version>${version.lib.testcontainers}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>mysql</artifactId>
                <version>${version.lib.testcontainers}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>jdbc</artifactId>
                <version>${version.lib.testcontainers}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>oracle-xe</artifactId>
                <version>${version.lib.testcontainers}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-kahadb-store</artifactId>
                <version>${version.lib.activemq}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.graphql</groupId>
                <artifactId>microprofile-graphql-tck</artifactId>
                <version>${version.lib.microprofile-graphql}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.metrics</groupId>
                <artifactId>microprofile-metrics-rest-tck</artifactId>
                <version>${version.lib.microprofile-metrics-api}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.jboss.arquillian.junit</groupId>
                        <artifactId>arquillian-junit-container</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.metrics</groupId>
                <artifactId>microprofile-metrics-optional-tck</artifactId>
                <version>${version.lib.microprofile-metrics-api}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.jboss.arquillian.junit</groupId>
                        <artifactId>arquillian-junit-container</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.metrics</groupId>
                <artifactId>microprofile-metrics-api-tck</artifactId>
                <version>${version.lib.microprofile-metrics-api}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.jboss.arquillian.junit</groupId>
                        <artifactId>arquillian-junit-container</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.lra</groupId>
                <artifactId>microprofile-lra-tck</artifactId>
                <version>${version.lib.microprofile-lra-api}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.microprofile.telemetry.tracing</groupId>
                <artifactId>microprofile-telemetry-tracing-tck</artifactId>
                <version>${version.lib.microprofile-telemetry-tck}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${version.lib.slf4j}</version>
            </dependency>
            <dependency>
                <groupId>org.mariadb.jdbc</groupId>
                <artifactId>mariadb-java-client</artifactId>
                <version>${version.lib.mariadb-java-client}</version>
            </dependency>
            <dependency>
                <groupId>com.microsoft.sqlserver</groupId>
                <artifactId>mssql-jdbc</artifactId>
                <version>${version.lib.mssql-jdbc}</version>
            </dependency>
            <!-- END OF Section 4: Testing -->

            <!-- imported boms -->
            <!-- Force upgrade. Used by grpc -->
            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-bom</artifactId>
                <version>${version.lib.google-protobuf}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- For dependency convergence of transitive deps on netty -->
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-bom</artifactId>
                <version>${version.lib.netty}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-bom</artifactId>
                <version>${version.lib.grpc}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.oracle.database.jdbc</groupId>
                <artifactId>ojdbc-bom</artifactId>
                <version>${version.lib.ojdbc}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${version.lib.jersey}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson</groupId>
                <artifactId>jackson-bom</artifactId>
                <version>${version.lib.jackson}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>io.opentelemetry</groupId>
                <artifactId>opentelemetry-bom</artifactId>
                <version>${version.lib.opentelemetry}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.oracle.oci.sdk</groupId>
                <artifactId>oci-java-sdk-bom</artifactId>
                <version>${version.lib.oci}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-bom</artifactId>
                <version>${version.lib.log4j}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-bom</artifactId>
                <version>${version.lib.slf4j}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>
