<?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.airlift</groupId>
        <artifactId>airbase</artifactId>
        <version>130</version>
    </parent>

    <groupId>io.trino</groupId>
    <artifactId>trino-root</artifactId>
    <version>401-SNAPSHOT</version>

    <name>trino-root</name>
    <description>Trino</description>
    <packaging>pom</packaging>
    <url>https://trino.io</url>

    <inceptionYear>2012</inceptionYear>

    <licenses>
        <license>
            <name>Apache License 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <connection>scm:git:git://github.com/trinodb/trino.git</connection>
        <url>https://github.com/trinodb/trino</url>
        <tag>HEAD</tag>
    </scm>

    <properties>
        <air.main.basedir>${project.basedir}</air.main.basedir>

        <air.check.skip-spotbugs>true</air.check.skip-spotbugs>
        <air.check.skip-pmd>true</air.check.skip-pmd>
        <air.check.skip-jacoco>true</air.check.skip-jacoco>

        <project.build.targetJdk>17</project.build.targetJdk>
        <air.java.version>17.0.4</air.java.version>
        <air.modernizer.java-version>8</air.modernizer.java-version>

        <air.release.preparation-goals>clean verify -DskipTests</air.release.preparation-goals>

        <dep.accumulo.version>1.7.4</dep.accumulo.version>
        <dep.accumulo-hadoop.version>2.7.7-1</dep.accumulo-hadoop.version>
        <dep.antlr.version>4.11.1</dep.antlr.version>
        <dep.airlift.version>219</dep.airlift.version>
        <dep.packaging.version>${dep.airlift.version}</dep.packaging.version>
        <dep.aws-sdk.version>1.12.172</dep.aws-sdk.version>
        <dep.okhttp.version>3.14.9</dep.okhttp.version>
        <dep.joda.version>2.10.13</dep.joda.version>
        <dep.jsonwebtoken.version>0.11.2</dep.jsonwebtoken.version>
        <dep.oracle.version>19.3.0.0</dep.oracle.version>
        <dep.drift.version>1.14</dep.drift.version>
        <dep.tempto.version>189</dep.tempto.version>
        <dep.gcs.version>2.2.8</dep.gcs.version>
        <dep.errorprone.version>2.15.0</dep.errorprone.version>
        <dep.testcontainers.version>1.17.3</dep.testcontainers.version>
        <dep.duct-tape.version>1.0.8</dep.duct-tape.version>
        <dep.coral.version>2.0.77</dep.coral.version>
        <dep.confluent.version>5.5.2</dep.confluent.version>
        <dep.casandra.version>4.14.0</dep.casandra.version>
        <dep.minio.version>7.1.4</dep.minio.version>
        <dep.iceberg.version>0.14.1</dep.iceberg.version>
        <dep.spotbugs-annotations.version>4.7.2</dep.spotbugs-annotations.version>

        <dep.docker.images.version>65</dep.docker.images.version>

        <!--
          America/Bahia_Banderas has:
           - offset change since 1970 (offset Jan 1970: -08:00, offset Jan 2018: -06:00)
           - DST (e.g. at 2017-04-02 02:00:00 clocks turned forward 1 hour; 2017-10-29 02:00:00 clocks turned backward 1 hour)
           - has forward offset change on first day of epoch (1970-01-01 00:00:00 clocks turned forward 1 hour)
           - had forward change at midnight (1970-01-01 00:00:00 clocks turned forward 1 hour)
          -->
        <air.test.timezone>America/Bahia_Banderas</air.test.timezone>
        <air.test.parallel>methods</air.test.parallel>
        <air.test.thread-count>2</air.test.thread-count>
        <!-- Be conservative about memory allotment, because tests start background process (e.g. docker containers) -->
        <air.test.jvmsize>3g</air.test.jvmsize>

        <air.javadoc.lint>-missing</air.javadoc.lint>
    </properties>

    <modules>
        <module>client/trino-cli</module>
        <module>client/trino-client</module>
        <module>client/trino-jdbc</module>
        <module>core/trino-main</module>
        <module>core/trino-parser</module>
        <module>core/trino-server</module>
        <module>core/trino-server-main</module>
        <module>core/trino-server-rpm</module>
        <module>core/trino-spi</module>
        <module>docs</module>
        <module>lib/trino-array</module>
        <module>lib/trino-collect</module>
        <module>lib/trino-filesystem</module>
        <module>lib/trino-geospatial-toolkit</module>
        <module>lib/trino-hadoop-toolkit</module>
        <module>lib/trino-hdfs</module>
        <module>lib/trino-matching</module>
        <module>lib/trino-memory-context</module>
        <module>lib/trino-orc</module>
        <module>lib/trino-parquet</module>
        <!-- TODO(https://github.com/trinodb/trino/issues/13051): Remove whole module when Phoenix5 is released -->
        <module>lib/trino-phoenix5-patched</module>
        <module>lib/trino-plugin-toolkit</module>
        <module>lib/trino-rcfile</module>
        <module>lib/trino-record-decoder</module>
        <module>plugin/trino-accumulo</module>
        <module>plugin/trino-accumulo-iterators</module>
        <module>plugin/trino-atop</module>
        <module>plugin/trino-base-jdbc</module>
        <module>plugin/trino-bigquery</module>
        <module>plugin/trino-blackhole</module>
        <module>plugin/trino-cassandra</module>
        <module>plugin/trino-clickhouse</module>
        <module>plugin/trino-delta-lake</module>
        <module>plugin/trino-druid</module>
        <module>plugin/trino-elasticsearch</module>
        <module>plugin/trino-example-http</module>
        <module>plugin/trino-exchange-filesystem</module>
        <module>plugin/trino-geospatial</module>
        <module>plugin/trino-google-sheets</module>
        <module>plugin/trino-hive</module>
        <module>plugin/trino-hive-hadoop2</module>
        <module>plugin/trino-http-event-listener</module>
        <module>plugin/trino-hudi</module>
        <module>plugin/trino-iceberg</module>
        <module>plugin/trino-jmx</module>
        <module>plugin/trino-kafka</module>
        <module>plugin/trino-kinesis</module>
        <module>plugin/trino-kudu</module>
        <module>plugin/trino-local-file</module>
        <module>plugin/trino-mariadb</module>
        <module>plugin/trino-memory</module>
        <module>plugin/trino-ml</module>
        <module>plugin/trino-mongodb</module>
        <module>plugin/trino-mysql</module>
        <module>plugin/trino-oracle</module>
        <module>plugin/trino-password-authenticators</module>
        <module>plugin/trino-phoenix5</module>
        <module>plugin/trino-pinot</module>
        <module>plugin/trino-postgresql</module>
        <module>plugin/trino-prometheus</module>
        <module>plugin/trino-raptor-legacy</module>
        <module>plugin/trino-redis</module>
        <module>plugin/trino-redshift</module>
        <module>plugin/trino-resource-group-managers</module>
        <module>plugin/trino-session-property-managers</module>
        <module>plugin/trino-singlestore</module>
        <module>plugin/trino-sqlserver</module>
        <module>plugin/trino-teradata-functions</module>
        <module>plugin/trino-thrift</module>
        <module>plugin/trino-thrift-api</module>
        <module>plugin/trino-thrift-testing-server</module>
        <module>plugin/trino-tpcds</module>
        <module>plugin/trino-tpch</module>
        <module>service/trino-proxy</module>
        <module>service/trino-verifier</module>
        <module>testing/trino-benchmark</module>
        <module>testing/trino-benchmark-queries</module>
        <module>testing/trino-benchto-benchmarks</module>
        <module>testing/trino-faulttolerant-tests</module>
        <module>testing/trino-plugin-reader</module>
        <module>testing/trino-product-tests</module>
        <module>testing/trino-product-tests-launcher</module>
        <module>testing/trino-server-dev</module>
        <module>testing/trino-test-jdbc-compatibility-old-driver</module>
        <module>testing/trino-test-jdbc-compatibility-old-server</module>
        <module>testing/trino-testing</module>
        <module>testing/trino-testing-containers</module>
        <module>testing/trino-testing-kafka</module>
        <module>testing/trino-testing-resources</module>
        <module>testing/trino-testing-services</module>
        <module>testing/trino-tests</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <!-- Trino -->
            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-array</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-base-jdbc</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-base-jdbc</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-benchmark</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-benchmark-queries</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-benchto-benchmarks</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-blackhole</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-cli</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-client</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-collect</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-collect</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-delta-lake</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-delta-lake</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-elasticsearch</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-example-http</artifactId>
                <type>zip</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-exchange-filesystem</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-exchange-filesystem</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-faulttolerant-tests</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-filesystem</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-geospatial</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-geospatial-toolkit</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-hadoop-toolkit</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-hdfs</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-hive</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-hive</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-hive-hadoop2</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-hudi</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-iceberg</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-iceberg</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-jdbc</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-jmx</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-local-file</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-main</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-main</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-mariadb</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-matching</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-memory</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-memory</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-memory-context</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-mongodb</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-mysql</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-orc</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-parquet</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-parser</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-parser</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-password-authenticators</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- TODO(https://github.com/trinodb/trino/issues/13051): Remove when Phoenix5 is released -->
            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-phoenix5-patched</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-pinot</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-plugin-reader</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-plugin-toolkit</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-plugin-toolkit</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-product-tests</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-raptor-legacy</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-rcfile</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-record-decoder</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-resource-group-managers</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-resource-group-managers</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-server</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-server-rpm</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-session-property-managers</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-session-property-managers</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-spi</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-spi</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-sqlserver</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-testing</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-testing-containers</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-testing-kafka</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-testing-resources</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-testing-services</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-tests</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-tests</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-thrift</artifactId>
                <type>zip</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-thrift-api</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-thrift-api</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-thrift-testing-server</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-tpcds</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-tpch</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- Trino external -->
            <dependency>
                <groupId>io.trino.benchto</groupId>
                <artifactId>benchto-driver</artifactId>
                <version>0.19</version>
            </dependency>

            <dependency>
                <groupId>io.trino.hadoop</groupId>
                <artifactId>hadoop-apache</artifactId>
                <version>3.2.0-16</version>
            </dependency>

            <dependency>
                <groupId>io.trino.hive</groupId>
                <artifactId>hive-apache</artifactId>
                <version>3.1.2-20</version>
            </dependency>

            <dependency>
                <groupId>io.trino.hive</groupId>
                <artifactId>hive-apache-jdbc</artifactId>
                <version>0.13.1-9</version>
            </dependency>

            <dependency>
                <groupId>io.trino.orc</groupId>
                <artifactId>orc-protobuf</artifactId>
                <version>14</version>
            </dependency>

            <dependency>
                <groupId>io.trino.tempto</groupId>
                <artifactId>tempto-core</artifactId>
                <version>${dep.tempto.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.code.findbugs</groupId>
                        <artifactId>annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>io.trino.tempto</groupId>
                <artifactId>tempto-kafka</artifactId>
                <version>${dep.tempto.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>io.trino.tempto</groupId>
                <artifactId>tempto-ldap</artifactId>
                <version>${dep.tempto.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino.tempto</groupId>
                <artifactId>tempto-runner</artifactId>
                <version>${dep.tempto.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino.tpcds</groupId>
                <artifactId>tpcds</artifactId>
                <version>1.4</version>
            </dependency>

            <dependency>
                <groupId>io.trino.tpch</groupId>
                <artifactId>tpch</artifactId>
                <version>1.1</version>
            </dependency>

            <!-- Airlift -->
            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>aircompressor</artifactId>
                <version>0.21</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>bootstrap</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>bytecode</artifactId>
                <version>1.4</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>concurrent</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>configuration</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>dbpool</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>discovery</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>event</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>http-client</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>http-server</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>jaxrs</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>jaxrs-testing</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>jmx</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>jmx-http</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>joni</artifactId>
                <version>2.1.5.3</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>json</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>log</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>log-manager</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>node</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>parameternames</artifactId>
                <version>1.4</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>security</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>stats</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>testing</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>trace-token</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>units</artifactId>
                <version>1.7</version>
            </dependency>

            <dependency>
                <groupId>io.airlift.discovery</groupId>
                <artifactId>discovery-server</artifactId>
                <version>1.30</version>
            </dependency>

            <dependency>
                <groupId>io.airlift.drift</groupId>
                <artifactId>drift-api</artifactId>
                <version>${dep.drift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift.drift</groupId>
                <artifactId>drift-client</artifactId>
                <version>${dep.drift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift.drift</groupId>
                <artifactId>drift-codec</artifactId>
                <version>${dep.drift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift.drift</groupId>
                <artifactId>drift-protocol</artifactId>
                <version>${dep.drift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift.drift</groupId>
                <artifactId>drift-server</artifactId>
                <version>${dep.drift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift.drift</groupId>
                <artifactId>drift-transport-netty</artifactId>
                <version>${dep.drift.version}</version>
            </dependency>

            <dependency>
                <groupId>io.airlift.resolver</groupId>
                <artifactId>resolver</artifactId>
                <version>1.6</version>
            </dependency>

            <!-- 3rd party -->
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>amazon-kinesis-client</artifactId>
                <version>1.6.3</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-lang</groupId>
                        <artifactId>commons-lang</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>joda-time</groupId>
                        <artifactId>joda-time</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.google.protobuf</groupId>
                        <artifactId>protobuf-java</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.amazonaws</groupId>
                        <artifactId>aws-java-sdk</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.amazonaws</groupId>
                        <artifactId>aws-java-sdk-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-core</artifactId>
                <version>${dep.aws-sdk.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>joda-time</groupId>
                        <artifactId>joda-time</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-dynamodb</artifactId>
                <version>${dep.aws-sdk.version}</version>
            </dependency>

            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-glue</artifactId>
                <version>${dep.aws-sdk.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>joda-time</groupId>
                        <artifactId>joda-time</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-kinesis</artifactId>
                <version>${dep.aws-sdk.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>joda-time</groupId>
                        <artifactId>joda-time</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-s3</artifactId>
                <version>${dep.aws-sdk.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>joda-time</groupId>
                        <artifactId>joda-time</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-sts</artifactId>
                <version>${dep.aws-sdk.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>joda-time</groupId>
                        <artifactId>joda-time</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.clearspring.analytics</groupId>
                <artifactId>stream</artifactId>
                <version>2.9.5</version>
            </dependency>

            <dependency>
                <groupId>com.clickhouse</groupId>
                <artifactId>clickhouse-jdbc</artifactId>
                <version>0.3.2-patch3</version>
                <classifier>all</classifier>
                <exclusions>
                    <exclusion>
                        <groupId>*</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.databricks</groupId>
                <artifactId>databricks-jdbc</artifactId>
                <version>2.6.25-1</version>
            </dependency>

            <dependency>
                <groupId>com.datastax.oss</groupId>
                <artifactId>java-driver-core</artifactId>
                <version>${dep.casandra.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.ow2.asm</groupId>
                        <artifactId>asm-analysis</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.esri.geometry</groupId>
                <artifactId>esri-geometry-api</artifactId>
                <version>2.2.4</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.fasterxml.jackson.core</groupId>
                        <artifactId>jackson-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.facebook.thirdparty</groupId>
                <artifactId>libsvm</artifactId>
                <version>3.18.1</version>
            </dependency>

            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>caffeine</artifactId>
                <version>3.0.5</version>
            </dependency>

            <dependency>
                <groupId>com.github.docker-java</groupId>
                <artifactId>docker-java-api</artifactId>
                <version>3.2.13</version>
            </dependency>

            <dependency>
                <groupId>com.github.oshi</groupId>
                <artifactId>oshi-core</artifactId>
                <version>5.8.5</version>
            </dependency>

            <dependency>
                <groupId>com.google.cloud.bigdataoss</groupId>
                <artifactId>gcs-connector</artifactId>
                <version>hadoop2-${dep.gcs.version}</version>
                <classifier>shaded</classifier>
                <exclusions>
                    <exclusion>
                        <groupId>*</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.google.errorprone</groupId>
                <artifactId>error_prone_annotations</artifactId>
                <version>${dep.errorprone.version}</version>
            </dependency>

            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>1.4.200</version>
            </dependency>

            <dependency>
                <groupId>com.linkedin.calcite</groupId>
                <artifactId>calcite-core</artifactId>
                <version>1.21.0.152</version>
                <classifier>shaded</classifier>
                <exclusions>
                    <exclusion>
                        <!-- Exclude everything because shaded version of calcite-core still pulls in all the original dependencies -->
                        <groupId>*</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.linkedin.coral</groupId>
                <artifactId>coral-common</artifactId>
                <version>${dep.coral.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.hive</groupId>
                        <artifactId>hive-metastore</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-common</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.linkedin.coral</groupId>
                <artifactId>coral-hive</artifactId>
                <version>${dep.coral.version}</version>
            </dependency>

            <dependency>
                <groupId>com.linkedin.coral</groupId>
                <artifactId>coral-trino</artifactId>
                <version>${dep.coral.version}</version>
                <exclusions>
                    <!--
                        The `trino-parser` library is being used internally within the `coral-trino` library for
                        parsing Trino SQL statements. This functionality is irrelevant in the context of
                        using Coral for Hive view translations within Trino.
                        This dependency is excluded because `trino-parser` does not guarantee API or behavioral
                        backwards compatibility.
                        Trino cannot provide the version on which `coral-trino` library depends on, because the
                        current version of `trino-parser` is used in tests of this module.
                        The dependency is therefore intentionally excluded to avoid breaking in an unexpected way,
                        or silent correctness issues.
                    -->
                    <exclusion>
                        <groupId>io.trino</groupId>
                        <artifactId>trino-parser</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.microsoft.sqlserver</groupId>
                <artifactId>mssql-jdbc</artifactId>
                <version>10.2.0.jre11</version>
            </dependency>

            <dependency>
                <groupId>com.nimbusds</groupId>
                <artifactId>nimbus-jose-jwt</artifactId>
                <version>9.14</version>
            </dependency>

            <dependency>
                <groupId>com.nimbusds</groupId>
                <artifactId>oauth2-oidc-sdk</artifactId>
                <version>9.18</version>
            </dependency>

            <dependency>
                <groupId>com.qubole.rubix</groupId>
                <artifactId>rubix-presto-shaded</artifactId>
                <version>0.3.18</version>
            </dependency>

            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>logging-interceptor</artifactId>
                <version>${dep.okhttp.version}</version>
            </dependency>

            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>mockwebserver</artifactId>
                <version>${dep.okhttp.version}</version>
            </dependency>

            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>${dep.okhttp.version}</version>
            </dependency>

            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp-tls</artifactId>
                <version>${dep.okhttp.version}</version>
            </dependency>

            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp-urlconnection</artifactId>
                <version>${dep.okhttp.version}</version>
            </dependency>

            <dependency>
                <groupId>com.teradata</groupId>
                <artifactId>re2j-td</artifactId>
                <version>1.4</version>
            </dependency>

            <dependency>
                <groupId>info.picocli</groupId>
                <artifactId>picocli</artifactId>
                <version>4.6.1</version>
            </dependency>

            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-avro-serializer</artifactId>
                <version>${dep.confluent.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.kafka</groupId>
                        <artifactId>kafka-clients</artifactId>
                    </exclusion>
                    <!--
                        This library depends on:
                         - org.glassfish.hk2.external:jakarta.inject that conflicts with javax.inject:javax.inject
                    -->
                    <exclusion>
                        <groupId>org.glassfish.hk2.external</groupId>
                        <artifactId>jakarta.inject</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.sf.jopt-simple</groupId>
                        <artifactId>jopt-simple</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-cli</groupId>
                        <artifactId>commons-cli</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-json-schema-serializer</artifactId>
                <version>${dep.confluent.version}</version>
                <!-- This is under Confluence Community License and it should not be used with compile scope -->
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.kafka</groupId>
                        <artifactId>kafka-clients</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.google.re2j</groupId>
                        <artifactId>re2j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-schema-registry-client</artifactId>
                <version>${dep.confluent.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.kafka</groupId>
                        <artifactId>kafka-clients</artifactId>
                    </exclusion>
                    <!--
                        This library depends on conflicting:
                        - com.sun.activation:jakarta.activation and jakarta.activation:jakarta.activation-api
                        - jakarta.el:jakarta.el-api and org.glassfish:jakarta.el
                        This library depends on:
                        - org.glassfish.hk2.external:jakarta.inject that conflicts with javax.inject:javax.inject
                        - jakarta.validation:jakarta.validation-api that conflicts with javax.validation:validation-api
                        - jakarta.annotation:jakarta.annotation-api that conflicts with javax.annotation:javax.annotation-api
                        - com.sun.activation:jakarta.activation that conflicts with javax.activation:javax.activation-api
                        - jakarta.ws.rs:jakarta.ws.rs-api that conflicts with javax.ws.rs:javax.ws.rs-api
                        - jakarta.xml.bind:jakarta.xml.bind-api that conflicts with javax.xml.bind:jaxb-api
                    -->
                    <exclusion>
                        <groupId>com.sun.activation</groupId>
                        <artifactId>jakarta.activation</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>jakarta.activation</groupId>
                        <artifactId>jakarta.activation-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>jakarta.annotation</groupId>
                        <artifactId>jakarta.annotation-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>jakarta.validation</groupId>
                        <artifactId>jakarta.validation-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>jakarta.ws.rs</groupId>
                        <artifactId>jakarta.ws.rs-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>jakarta.xml.bind</groupId>
                        <artifactId>jakarta.xml.bind-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish</groupId>
                        <artifactId>jakarta.el</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.glassfish.hk2.external</groupId>
                        <artifactId>jakarta.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-schema-serializer</artifactId>
                <version>${dep.confluent.version}</version>
            </dependency>

            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-api</artifactId>
                <version>${dep.jsonwebtoken.version}</version>
            </dependency>

            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-impl</artifactId>
                <version>${dep.jsonwebtoken.version}</version>
            </dependency>

            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-jackson</artifactId>
                <version>${dep.jsonwebtoken.version}</version>
            </dependency>

            <dependency>
                <groupId>io.minio</groupId>
                <artifactId>minio</artifactId>
                <version>${dep.minio.version}</version>
            </dependency>

            <!-- io.confluent:kafka-avro-serializer uses multiple versions of this transitive dependency -->
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-annotations</artifactId>
                <version>1.6.2</version>
            </dependency>

            <!-- io.confluent:kafka-avro-serializer uses multiple versions of this transitive dependency -->
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-core</artifactId>
                <version>1.6.2</version>
            </dependency>

            <dependency>
                <groupId>it.unimi.dsi</groupId>
                <artifactId>fastutil</artifactId>
                <version>8.3.0</version>
            </dependency>

            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.3.1</version>
            </dependency>

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
            </dependency>

            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.22</version>
            </dependency>

            <dependency>
                <!-- org.testcontainers:testcontainer's dependencies pull two different versions of this artifact and this is to negotiate the version -->
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna</artifactId>
                <version>5.12.1</version>
            </dependency>

            <dependency>
                <groupId>net.jodah</groupId>
                <artifactId>failsafe</artifactId>
                <version>2.4.0</version>
            </dependency>

            <dependency>
                <groupId>net.sf.opencsv</groupId>
                <artifactId>opencsv</artifactId>
                <version>2.3</version>
            </dependency>

            <dependency>
                <groupId>org.alluxio</groupId>
                <artifactId>alluxio-shaded-client</artifactId>
                <version>2.8.1</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.antlr</groupId>
                <artifactId>antlr4-runtime</artifactId>
                <version>${dep.antlr.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.avro</groupId>
                <artifactId>avro</artifactId>
                <version>1.9.2</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>1.21</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-math3</artifactId>
                <version>3.6.1</version>
            </dependency>

            <dependency>
                <groupId>org.apache.iceberg</groupId>
                <artifactId>iceberg-api</artifactId>
                <version>${dep.iceberg.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.iceberg</groupId>
                <artifactId>iceberg-core</artifactId>
                <version>${dep.iceberg.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.avro</groupId>
                        <artifactId>avro</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.iceberg</groupId>
                <artifactId>iceberg-hive-metastore</artifactId>
                <version>${dep.iceberg.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.iceberg</groupId>
                <artifactId>iceberg-orc</artifactId>
                <version>${dep.iceberg.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.avro</groupId>
                        <artifactId>avro</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.iceberg</groupId>
                <artifactId>iceberg-parquet</artifactId>
                <version>${dep.iceberg.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.parquet</groupId>
                        <artifactId>parquet-avro</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>2.4.1</version>
            </dependency>

            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-model</artifactId>
                <version>3.8.4</version>
            </dependency>

            <dependency>
                <groupId>org.apache.thrift</groupId>
                <artifactId>libthrift</artifactId>
                <version>0.9.3-1</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.httpcomponents</groupId>
                        <artifactId>httpcore</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.httpcomponents</groupId>
                        <artifactId>httpclient</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>3.5.8</version>
                <exclusions>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-server</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-servlet</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-cli</groupId>
                        <artifactId>commons-cli</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.checkerframework</groupId>
                <artifactId>checker-qual</artifactId>
                <version>3.25.0</version>
            </dependency>

            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-utils</artifactId>
                <version>3.4.1</version>
            </dependency>

            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-core</artifactId>
                <version>7.15.0</version>
            </dependency>

            <!-- force newer version to be used for dependencies -->
            <dependency>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>3.22.0-GA</version>
            </dependency>

            <dependency>
                <groupId>org.jdbi</groupId>
                <artifactId>jdbi3-bom</artifactId>
                <type>pom</type>
                <version>3.32.0</version>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.jetbrains</groupId>
                <artifactId>annotations</artifactId>
                <version>19.0.0</version>
            </dependency>

            <dependency>
                <groupId>org.jgrapht</groupId>
                <artifactId>jgrapht-core</artifactId>
                <version>0.9.0</version>
            </dependency>

            <dependency>
                <groupId>org.locationtech.jts</groupId>
                <artifactId>jts-core</artifactId>
                <version>1.16.1</version>
            </dependency>

            <dependency>
                <groupId>org.locationtech.jts.io</groupId>
                <artifactId>jts-io-common</artifactId>
                <version>1.16.1</version>
                <exclusions>
                    <exclusion>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.mariadb.jdbc</groupId>
                <artifactId>mariadb-java-client</artifactId>
                <version>3.0.5</version>
            </dependency>

            <dependency>
                <groupId>org.openjdk.jol</groupId>
                <artifactId>jol-core</artifactId>
                <version>0.16</version>
            </dependency>

            <dependency>
                <groupId>org.ow2.asm</groupId>
                <artifactId>asm</artifactId>
                <version>9.3</version>
            </dependency>

            <dependency>
                <groupId>org.pcollections</groupId>
                <artifactId>pcollections</artifactId>
                <version>2.1.2</version>
            </dependency>

            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>42.5.0</version>
            </dependency>

            <dependency>
                <groupId>org.roaringbitmap</groupId>
                <artifactId>RoaringBitmap</artifactId>
                <version>0.9.30</version>
            </dependency>

            <dependency>
                <groupId>org.sonatype.aether</groupId>
                <artifactId>aether-api</artifactId>
                <version>1.13.1</version>
            </dependency>

            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers</artifactId>
                <version>${dep.testcontainers.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers-bom</artifactId>
                <type>pom</type>
                <version>${dep.testcontainers.version}</version>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.xerial.snappy</groupId>
                <artifactId>snappy-java</artifactId>
                <version>1.1.8.4</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- Transitive dependency from jackson-dataformat-yaml. Avoid different versions being used -->
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>1.31</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.antlr</groupId>
                    <artifactId>antlr4-maven-plugin</artifactId>
                    <version>${dep.antlr.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>antlr4</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <visitor>true</visitor>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.2.4</version>
                </plugin>

                <plugin>
                    <groupId>org.skife.maven</groupId>
                    <artifactId>really-executable-jar-maven-plugin</artifactId>
                    <version>1.0.5</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.gmaven</groupId>
                    <artifactId>groovy-maven-plugin</artifactId>
                    <version>2.1.1</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.6.0</version>
                </plugin>

                <plugin>
                    <groupId>io.airlift.drift</groupId>
                    <artifactId>drift-maven-plugin</artifactId>
                    <version>${dep.drift.version}</version>
                </plugin>

                <plugin>
                    <groupId>org.gaul</groupId>
                    <artifactId>modernizer-maven-plugin</artifactId>
                    <configuration>
                        <violationsFiles>
                            <violationsFile>${air.main.basedir}/.mvn/modernizer/violations.xml</violationsFile>
                        </violationsFiles>
                        <exclusionPatterns>
                            <exclusionPattern>org/joda/time/.*</exclusionPattern>
                        </exclusionPatterns>
                        <exclusions>
                            <!-- getOnlyElement is more readable than the stream analogue -->
                            <exclusion>com/google/common/collect/Iterables.getOnlyElement:(Ljava/lang/Iterable;)Ljava/lang/Object;</exclusion>
                            <!-- getLast has lower complexity for array based lists than the stream analogue (O(1) vs O(log(N)) -->
                            <exclusion>com/google/common/collect/Iterables.getLast:(Ljava/lang/Iterable;)Ljava/lang/Object;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.getLast:(Ljava/lang/Iterable;Ljava/lang/Object;)Ljava/lang/Object;</exclusion>
                            <!-- TODO: requires getting to common understanding which of those we want to enable -->
                            <exclusion>com/google/common/collect/Iterables.transform:(Ljava/lang/Iterable;Lcom/google/common/base/Function;)Ljava/lang/Iterable;</exclusion>
                            <exclusion>com/google/common/collect/Lists.transform:(Ljava/util/List;Lcom/google/common/base/Function;)Ljava/util/List;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.isEmpty:(Ljava/lang/Iterable;)Z</exclusion>
                            <exclusion>com/google/common/collect/Iterables.concat:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/lang/Iterable;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.concat:(Ljava/lang/Iterable;Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/lang/Iterable;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.concat:(Ljava/lang/Iterable;Ljava/lang/Iterable;Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/lang/Iterable;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.concat:(Ljava/lang/Iterable;)Ljava/lang/Iterable;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.all:(Ljava/lang/Iterable;Lcom/google/common/base/Predicate;)Z</exclusion>
                            <exclusion>com/google/common/collect/Iterables.any:(Ljava/lang/Iterable;Lcom/google/common/base/Predicate;)Z</exclusion>
                            <exclusion>com/google/common/collect/Iterables.skip:(Ljava/lang/Iterable;I)Ljava/lang/Iterable;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.limit:(Ljava/lang/Iterable;I)Ljava/lang/Iterable;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.get:(Ljava/lang/Iterable;I)Ljava/lang/Object;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.getFirst:(Ljava/lang/Iterable;Ljava/lang/Object;)Ljava/lang/Object;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.getLast:(Ljava/lang/Iterable;)Ljava/lang/Object;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.cycle:(Ljava/lang/Iterable;)Ljava/lang/Iterable;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.cycle:([Ljava/lang/Object;)Ljava/lang/Iterable;</exclusion>
                            <exclusion>com/google/common/collect/Iterables.getOnlyElement:(Ljava/lang/Iterable;Ljava/lang/Object;)Ljava/lang/Object;</exclusion>
                            <!-- com.google.common.io.BaseEncoding.base64 provides more reach interfaces than java.util.Base64 -->
                            <exclusion>com/google/common/io/BaseEncoding.base64:()Lcom/google/common/io/BaseEncoding;</exclusion>
                        </exclusions>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <configuration>
                        <rules>
                            <compound implementation="com.github.ferstl.maven.pomenforcers.CompoundPedanticEnforcer">
                                <enforcers>POM_SECTION_ORDER,MODULE_ORDER,DEPENDENCY_MANAGEMENT_ORDER,DEPENDENCY_ORDER,DEPENDENCY_ELEMENT</enforcers>
                                <pomSectionPriorities>modelVersion,parent,groupId,artifactId,version,name,description,packaging,url,inceptionYear,licenses,scm,properties,modules</pomSectionPriorities>
                                <dependenciesGroupIdPriorities>io.trino,io.airlift</dependenciesGroupIdPriorities>
                                <dependenciesOrderBy>scope,groupId,artifactId</dependenciesOrderBy>
                                <dependenciesScopePriorities>compile,runtime,provided,test</dependenciesScopePriorities>
                                <dependencyManagementOrderBy>groupId,artifactId</dependencyManagementOrderBy>
                                <dependencyManagementGroupIdPriorities>io.trino,io.airlift</dependencyManagementGroupIdPriorities>
                                <dependencyElementOrdering>groupId,artifactId,type,version</dependencyElementOrdering>
                            </compound>
                            <requireUpperBoundDeps>
                                <excludes combine.children="append">
                                    <!-- TODO: fix this in Airlift resolver -->
                                    <exclude>org.codehaus.plexus:plexus-utils</exclude>
                                    <exclude>com.google.guava:guava</exclude>
                                    <exclude>com.fasterxml.jackson.core:jackson-core</exclude>
                                    <exclude>com.google.j2objc:j2objc-annotations</exclude>
                                </excludes>
                            </requireUpperBoundDeps>
                            <bannedDependencies>
                                <excludes combine.children="append">
                                    <!-- We don't use log4j2, additionally versions < 2.15.0 are vulnerable to the RCE Log4Shell (CVE-2021-44228) -->
                                    <exclude>org.apache.logging.log4j:log4j-core</exclude>
                                </excludes>
                            </bannedDependencies>
                        </rules>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>com.github.ferstl</groupId>
                            <artifactId>pedantic-pom-enforcers</artifactId>
                            <version>2.0.0</version>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>ca.vanzyl.provisio.maven.plugins</groupId>
                    <artifactId>provisio-maven-plugin</artifactId>
                    <version>1.0.18</version>
                </plugin>

                <plugin>
                    <groupId>pl.project13.maven</groupId>
                    <artifactId>git-commit-id-plugin</artifactId>
                    <configuration>
                        <runOnlyOnce>true</runOnlyOnce>
                        <injectAllReactorProjects>true</injectAllReactorProjects>
                        <offline>true</offline>
                        <!-- A workaround to make build work in a Git worktree, see https://github.com/git-commit-id/git-commit-id-maven-plugin/issues/215 -->
                        <useNativeGit>true</useNativeGit>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.basepom.maven</groupId>
                    <artifactId>duplicate-finder-maven-plugin</artifactId>
                    <configuration>
                        <exceptions combine.children="append">
                            <exception>
                                <conflictingDependencies>
                                    <dependency>
                                        <groupId>com.google.cloud.bigdataoss</groupId>
                                        <artifactId>gcs-connector</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>org.apache.httpcomponents</groupId>
                                        <artifactId>httpclient</artifactId>
                                    </dependency>
                                </conflictingDependencies>
                                <resources>
                                    <resource>mozilla/public-suffix-list.txt</resource>
                                </resources>
                            </exception>
                            <exception>
                                <conflictingDependencies>
                                    <dependency>
                                        <groupId>com.google.api</groupId>
                                        <artifactId>gax</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>com.google.cloud.bigdataoss</groupId>
                                        <artifactId>gcs-connector</artifactId>
                                    </dependency>
                                </conflictingDependencies>
                                <resources>
                                    <resource>dependencies.properties</resource>
                                </resources>
                            </exception>
                        </exceptions>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>io.trino</groupId>
                <artifactId>trino-maven-plugin</artifactId>
                <version>11</version>
                <extensions>true</extensions>
            </plugin>

            <plugin>
                <groupId>ca.vanzyl.provisio.maven.plugins</groupId>
                <artifactId>provisio-maven-plugin</artifactId>
                <extensions>true</extensions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration combine.children="append">
                    <fork>false</fork>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <includes>
                        <!-- Tests classes should start with "Test", but we do also want to include tests incorrectly named, with "Test" at the end -->
                        <include>**/Test*.java</include>
                        <include>**/*Test.java</include>
                        <include>**/Benchmark*.java</include>
                    </includes>
                    <excludes>
                        <exclude>**/*jmhTest*.java</exclude>
                        <exclude>**/*jmhType*.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>errorprone-compiler</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <!--suppress MavenModelInspection -->
                        <configuration combine.children="merge">
                            <!-- forking not required due to JVM flags in .mvn/jvm.config -->
                            <!-- see https://errorprone.info/docs/installation#maven -->
                            <compilerArgs>
                                <arg>-XDcompilePolicy=simple</arg>
                                <arg>
                                    -Xplugin:ErrorProne \
                                    -Xep:BadInstanceof:ERROR \
                                    -Xep:BoxedPrimitiveConstructor:ERROR \
                                    -Xep:ClassCanBeStatic:ERROR \
                                    -Xep:CompareToZero:ERROR \
                                    -Xep:DefaultCharset:ERROR \
                                    -Xep:EqualsGetClass:OFF <!-- we would rather want the opposite check --> \
                                    -Xep:EqualsIncompatibleType:ERROR \
                                    -Xep:FallThrough:ERROR \
                                    -Xep:GuardedBy:OFF <!-- needs some careful inspection --> \
                                    -Xep:HidingField:ERROR \
                                    -Xep:ImmutableEnumChecker:OFF <!-- flags enums with List fields even if initialized with ImmutableList, and other false positives --> \
                                    -Xep:ImmutableSetForContains:ERROR \
                                    -Xep:InconsistentCapitalization:ERROR <!-- fields/variables should not differ only in case --> \
                                    -Xep:InconsistentHashCode:ERROR \
                                    -Xep:InjectOnConstructorOfAbstractClass:ERROR \
                                    -Xep:MissingCasesInEnumSwitch:ERROR \
                                    -Xep:MissingOverride:ERROR \
                                    -Xep:MutablePublicArray:ERROR \
                                    -Xep:NullOptional:ERROR \
                                    -Xep:ObjectToString:ERROR \
                                    -Xep:PreferredInterfaceType:OFF <!-- flags List fields even if initialized with ImmutableList --> \
                                    -Xep:StreamResourceLeak:ERROR \
                                    -Xep:UnnecessaryLambda:OFF <!-- we deliberately use it in a couple of places --> \
                                    -Xep:UnnecessaryMethodReference:ERROR \
                                    -Xep:UnnecessaryOptionalGet:ERROR \
                                    -Xep:UnusedVariable:ERROR \
                                    -Xep:UseEnumSwitch:ERROR \
                                    -XepExcludedPaths:.*/target/generated-(|test-)sources/.*
                                </arg>
                            </compilerArgs>
                            <annotationProcessorPaths>
                                <path>
                                    <groupId>com.google.errorprone</groupId>
                                    <artifactId>error_prone_core</artifactId>
                                    <version>${dep.errorprone.version}</version>
                                </path>
                            </annotationProcessorPaths>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <!-- Allow to run goals with an empty local Maven repository -->
            <id>disable-check-spi-dependencies</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.trino</groupId>
                        <artifactId>trino-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-check-spi-dependencies</id>
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>gib</id>
            <properties>
                <!-- the *local* master, not refs/remotes/... -->
                <gib.referenceBranch>master</gib.referenceBranch>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.github.gitflow-incremental-builder</groupId>
                        <artifactId>gitflow-incremental-builder</artifactId>
                        <version>4.1.1</version>
                        <extensions>true</extensions>
                        <configuration>
                            <disableIfBranchMatches>master</disableIfBranchMatches>
                            <compareToMergeBase>true</compareToMergeBase>
                            <uncommitted>true</uncommitted>
                            <untracked>true</untracked>
                            <buildDownstream>true</buildDownstream>
                            <buildUpstream>true</buildUpstream>
                            <buildUpstreamMode>impacted</buildUpstreamMode>
                            <!-- Skip tests and checks for upstream modules since they have not been modified but are still required to be built -->
                            <skipTestsForUpstreamModules>true</skipTestsForUpstreamModules>
                            <argsForUpstreamModules>-Dmaven.source.skip=true -Dair.check.skip-all</argsForUpstreamModules>
                            <!-- Any modules selected with -pl will be built fully (with tests etc.) if the selected module itself is changed
                            or one of its (non-selected) upstream modules -->
                            <disableSelectedProjectsHandling>true</disableSelectedProjectsHandling>
                            <failOnMissingGitDir>true</failOnMissingGitDir>
                            <failOnError>true</failOnError>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>