<?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>148</version>
    </parent>

    <groupId>io.trino</groupId>
    <artifactId>trino-root</artifactId>
    <version>435</version>
    <packaging>pom</packaging>

    <name>${project.artifactId}</name>
    <description>Trino</description>
    <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>

    <modules>
        <module>client/trino-cli</module>
        <module>client/trino-client</module>
        <module>client/trino-jdbc</module>
        <module>core/trino-grammar</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-cache</module>
        <module>lib/trino-filesystem</module>
        <module>lib/trino-filesystem-azure</module>
        <module>lib/trino-filesystem-gcs</module>
        <module>lib/trino-filesystem-manager</module>
        <module>lib/trino-filesystem-s3</module>
        <module>lib/trino-geospatial-toolkit</module>
        <module>lib/trino-hdfs</module>
        <module>lib/trino-hive-formats</module>
        <!-- TODO Remove whole module when Ignite is released -->
        <module>lib/trino-ignite-patched</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-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-example-jdbc</module>
        <module>plugin/trino-exchange-filesystem</module>
        <module>plugin/trino-exchange-hdfs</module>
        <module>plugin/trino-geospatial</module>
        <module>plugin/trino-google-sheets</module>
        <module>plugin/trino-hive</module>
        <module>plugin/trino-http-event-listener</module>
        <module>plugin/trino-hudi</module>
        <module>plugin/trino-iceberg</module>
        <module>plugin/trino-ignite</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-mysql-event-listener</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-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>

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

    <properties>
        <project.build.targetJdk>17</project.build.targetJdk>

        <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>
        <air.java.version>17.0.5</air.java.version>
        <air.javadoc.lint>-missing</air.javadoc.lint>
        <air.main.basedir>${project.basedir}</air.main.basedir>
        <air.modernizer.java-version>8</air.modernizer.java-version>
        <air.release.preparation-goals>clean verify -DskipTests</air.release.preparation-goals>
        <!--
          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>
        <!-- G1 default region size for a small heap is 1MB. Tests (TestHiveConnectorTest.testMultipleWritersWhenTaskScaleWritersIsEnabled) in particular
             were observed allocating large number of byte[] of about 1.6MB in size, thus being treated as humongous allocations and preventing heap saturation.
             Force bigger region size in attempt to help G1 utilize heap fully. -->
        <air.test.jvm.additional-arguments>
            -XX:G1HeapRegionSize=32M
            -XX:+UnlockDiagnosticVMOptions
            <!-- bump from default of 2 -->
            -XX:GCLockerRetryAllocationCount=10
        </air.test.jvm.additional-arguments>

        <!-- keep dependency properties sorted -->
        <dep.accumulo-hadoop.version>2.7.7-1</dep.accumulo-hadoop.version>
        <dep.accumulo.version>1.10.2</dep.accumulo.version>
        <dep.airlift.version>239</dep.airlift.version>
        <dep.antlr.version>4.13.1</dep.antlr.version>
        <dep.arrow.version>14.0.1</dep.arrow.version>
        <dep.avro.version>1.11.3</dep.avro.version>
        <dep.aws-sdk.version>1.12.610</dep.aws-sdk.version>
        <dep.cassandra.version>4.17.0</dep.cassandra.version>
        <dep.confluent.version>7.5.1</dep.confluent.version>
        <dep.docker.images.version>87</dep.docker.images.version>
        <dep.drift.version>1.21</dep.drift.version>
        <dep.duct-tape.version>1.0.8</dep.duct-tape.version>
        <dep.errorprone.version>2.23.0</dep.errorprone.version>
        <dep.flyway.version>10.1.0</dep.flyway.version>
        <dep.google.http.client.version>1.43.3</dep.google.http.client.version>
        <dep.iceberg.version>1.4.2</dep.iceberg.version>
        <dep.jna.version>5.14.0</dep.jna.version>
        <dep.jsonwebtoken.version>0.12.3</dep.jsonwebtoken.version>
        <dep.kafka-clients.version>3.6.1</dep.kafka-clients.version>
        <dep.kotlin.version>1.9.20</dep.kotlin.version>
        <dep.okio.version>3.6.0</dep.okio.version>
        <dep.packaging.version>${dep.airlift.version}</dep.packaging.version>
        <dep.parquet.version>1.13.1</dep.parquet.version>
        <dep.protobuf.version>3.25.1</dep.protobuf.version>
        <dep.swagger.version>2.2.19</dep.swagger.version>
        <dep.takari.version>2.1.2</dep.takari.version>
        <dep.tcnative.version>2.0.62.Final</dep.tcnative.version>
        <dep.tempto.version>201</dep.tempto.version>
        <dep.wire.version>4.8.1</dep.wire.version>
    </properties>

    <dependencyManagement>
        <dependencies>

            <dependency>
                <groupId>com.azure</groupId>
                <artifactId>azure-sdk-bom</artifactId>
                <version>1.2.19</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>libraries-bom</artifactId>
                <version>26.27.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.oracle.database.jdbc</groupId>
                <artifactId>ojdbc10-production</artifactId>
                <version>19.21.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp-bom</artifactId>
                <version>4.12.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>bom</artifactId>
                <version>${dep.airlift.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-bom</artifactId>
                <version>1.60.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-bom</artifactId>
                <version>4.1.101.Final</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-bom</artifactId>
                <version>11.0.18</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

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

            <dependency>
                <groupId>org.ow2.asm</groupId>
                <artifactId>asm-bom</artifactId>
                <version>9.6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers-bom</artifactId>
                <version>1.19.3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>bom</artifactId>
                <version>2.21.43</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.adobe.testing</groupId>
                <artifactId>s3mock-testcontainers</artifactId>
                <version>3.2.0</version>
            </dependency>

            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>amazon-kinesis-client</artifactId>
                <version>1.15.0</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.amazonaws</groupId>
                        <artifactId>aws-java-sdk</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.amazonaws</groupId>
                        <artifactId>aws-java-sdk-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.google.protobuf</groupId>
                        <artifactId>protobuf-java</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-lang</groupId>
                        <artifactId>commons-lang</artifactId>
                    </exclusion>
                    <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-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>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-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.azure</groupId>
                <artifactId>azure-core-tracing-opentelemetry</artifactId>
                <version>1.0.0-beta.42</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.azure</groupId>
                        <artifactId>azure-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

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

            <dependency>
                <groupId>com.clickhouse</groupId>
                <artifactId>clickhouse-jdbc</artifactId>
                <version>0.5.0</version>
                <classifier>all</classifier>
            </dependency>

            <dependency>
                <groupId>com.datastax.oss</groupId>
                <artifactId>java-driver-core</artifactId>
                <version>${dep.cassandra.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.1.8</version>
            </dependency>

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

            <dependency>
                <groupId>com.github.luben</groupId>
                <artifactId>zstd-jni</artifactId>
                <version>1.5.5-11</version>
            </dependency>

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

            <dependency>
                <groupId>com.google.auto.value</groupId>
                <artifactId>auto-value-annotations</artifactId>
                <version>1.10.4</version>
            </dependency>

            <dependency>
                <groupId>com.google.cloud.bigdataoss</groupId>
                <artifactId>gcs-connector</artifactId>
                <version>3.0.0</version>
                <classifier>shaded</classifier>
                <exclusions>
                    <exclusion>
                        <groupId>*</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- force newer version to be used for dependencies -->
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.10.1</version>
            </dependency>

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

            <dependency>
                <groupId>com.google.http-client</groupId>
                <artifactId>google-http-client</artifactId>
                <version>${dep.google.http.client.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.http-client</groupId>
                <artifactId>google-http-client-gson</artifactId>
                <version>${dep.google.http.client.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
                <version>${dep.protobuf.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java-util</artifactId>
                <version>${dep.protobuf.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-kotlin</artifactId>
                <version>${dep.protobuf.version}</version>
            </dependency>

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

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

            <dependency>
                <groupId>com.mysql</groupId>
                <artifactId>mysql-connector-j</artifactId>
                <version>8.2.0</version>
            </dependency>

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

            <dependency>
                <groupId>com.nimbusds</groupId>
                <artifactId>oauth2-oidc-sdk</artifactId>
                <version>11.7</version>
                <classifier>jdk11</classifier>
            </dependency>

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

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

            <dependency>
                <groupId>com.squareup.okio</groupId>
                <artifactId>okio-jvm</artifactId>
                <version>${dep.okio.version}</version>
            </dependency>

            <dependency>
                <groupId>com.squareup.wire</groupId>
                <artifactId>wire-runtime-jvm</artifactId>
                <version>${dep.wire.version}</version>
            </dependency>

            <dependency>
                <groupId>com.squareup.wire</groupId>
                <artifactId>wire-schema-jvm</artifactId>
                <version>${dep.wire.version}</version>
            </dependency>

            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.16.0</version>
            </dependency>

            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.15.1</version>
            </dependency>

            <dependency>
                <groupId>dev.failsafe</groupId>
                <artifactId>failsafe</artifactId>
                <version>3.3.2</version>
            </dependency>

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

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>aircompressor</artifactId>
                <version>0.25</version>
            </dependency>

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

            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>joni</artifactId>
                <version>2.1.5.3</version>
            </dependency>
            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>junit-extensions</artifactId>
                <version>2</version>
            </dependency>

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

            <dependency>
                <groupId>io.airlift.discovery</groupId>
                <artifactId>discovery-server</artifactId>
                <version>1.36</version>
                <exclusions>
                    <exclusion>
                        <groupId>io.airlift</groupId>
                        <artifactId>event-http</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>io.airlift</groupId>
                        <artifactId>jmx-http-rpc</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.iq80.leveldb</groupId>
                        <artifactId>leveldb</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.iq80.leveldb</groupId>
                        <artifactId>leveldb-api</artifactId>
                    </exclusion>
                </exclusions>
            </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.drift</groupId>
                <artifactId>drift-transport-spi</artifactId>
                <version>${dep.drift.version}</version>
            </dependency>

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

            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-avro-serializer</artifactId>
                <version>${dep.confluent.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.re2j</groupId>
                        <artifactId>re2j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-cli</groupId>
                        <artifactId>commons-cli</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.sf.jopt-simple</groupId>
                        <artifactId>jopt-simple</artifactId>
                    </exclusion>
                    <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>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-schema-registry-client</artifactId>
                <version>${dep.confluent.version}</version>
                <exclusions>
                    <!-- Brings in a 2.13.4.2 version of databind -->
                    <exclusion>
                        <groupId>com.fasterxml.jackson.core</groupId>
                        <artifactId>jackson-databind</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.activation</groupId>
                        <artifactId>jakarta.activation</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>jakarta.activation</groupId>
                        <artifactId>jakarta.activation-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.kafka</groupId>
                        <artifactId>kafka-clients</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.dropwizard.metrics</groupId>
                <artifactId>metrics-core</artifactId>
                <version>4.2.22</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>8.5.7</version>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative</artifactId>
                <version>${dep.tcnative.version}</version>
                <classifier>linux-x86_64</classifier>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative</artifactId>
                <version>${dep.tcnative.version}</version>
                <classifier>linux-x86_64-fedora</classifier>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative</artifactId>
                <version>${dep.tcnative.version}</version>
                <classifier>linux-aarch_64-fedora</classifier>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative</artifactId>
                <version>${dep.tcnative.version}</version>
                <classifier>osx-x86_64</classifier>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative-boringssl-static</artifactId>
                <version>${dep.tcnative.version}</version>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative-boringssl-static</artifactId>
                <version>${dep.tcnative.version}</version>
                <classifier>linux-x86_64</classifier>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative-boringssl-static</artifactId>
                <version>${dep.tcnative.version}</version>
                <classifier>linux-aarch_64</classifier>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative-boringssl-static</artifactId>
                <version>${dep.tcnative.version}</version>
                <classifier>osx-x86_64</classifier>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative-boringssl-static</artifactId>
                <version>${dep.tcnative.version}</version>
                <classifier>osx-aarch_64</classifier>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative-boringssl-static</artifactId>
                <version>${dep.tcnative.version}</version>
                <classifier>windows-x86_64</classifier>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-tcnative-classes</artifactId>
                <version>${dep.tcnative.version}</version>
            </dependency>

            <dependency>
                <groupId>io.projectreactor</groupId>
                <artifactId>reactor-core</artifactId>
                <version>3.4.34</version>
            </dependency>

            <!-- io.confluent:kafka-avro-serializer uses multiple versions of this transitive dependency -->
            <dependency>
                <groupId>io.swagger.core.v3</groupId>
                <artifactId>swagger-annotations</artifactId>
                <version>${dep.swagger.version}</version>
            </dependency>

            <!-- io.confluent:kafka-avro-serializer uses multiple versions of this transitive dependency -->
            <dependency>
                <groupId>io.swagger.core.v3</groupId>
                <artifactId>swagger-core</artifactId>
                <version>${dep.swagger.version}</version>
            </dependency>
            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>re2j</artifactId>
                <version>1.6</version>
            </dependency>
            <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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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-cache</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-cache</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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-delta-lake</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-delta-lake</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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>
                <version>${project.version}</version>
                <type>zip</type>
            </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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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-filesystem</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>

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

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

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

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-filesystem-s3</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-grammar</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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-hive-formats</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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>

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

            <!-- TODO Remove whole module when Ignite is released -->
            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-ignite-patched</artifactId>
                <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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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-mongodb</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>

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

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-mysql</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>

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

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-postgresql</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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-record-decoder</artifactId>
                <version>${project.version}</version>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-record-decoder</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>

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

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

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

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-sqlserver</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-thrift</artifactId>
                <version>${project.version}</version>
                <type>zip</type>
            </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>
                <version>${project.version}</version>
                <type>test-jar</type>
            </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>

            <dependency>
                <groupId>io.trino.benchto</groupId>
                <artifactId>benchto-driver</artifactId>
                <version>0.26</version>
            </dependency>

            <dependency>
                <groupId>io.trino.coral</groupId>
                <artifactId>coral</artifactId>
                <version>2.2.14-1</version>
            </dependency>

            <dependency>
                <groupId>io.trino.hadoop</groupId>
                <artifactId>hadoop-apache</artifactId>
                <version>3.3.5-1</version>
            </dependency>

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

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

            <dependency>
                <groupId>io.trino.hive</groupId>
                <artifactId>hive-thrift</artifactId>
                <version>1</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>
                <exclusions>
                    <!-- not used in the runtime -->
                    <exclusion>
                        <groupId>javax.inject</groupId>
                        <artifactId>javax.inject</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

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

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

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

            <!-- TODO: remove when updated in airbase -->
            <dependency>
                <groupId>net.bytebuddy</groupId>
                <artifactId>byte-buddy</artifactId>
                <version>1.14.10</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>${dep.jna.version}</version>
            </dependency>

            <dependency>
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna-platform</artifactId>
                <version>${dep.jna.version}</version>
            </dependency>

            <dependency>
                <groupId>net.minidev</groupId>
                <artifactId>json-smart</artifactId>
                <version>2.5.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.9.3</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

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

            <dependency>
                <groupId>org.apache.arrow</groupId>
                <artifactId>arrow-compression</artifactId>
                <version>${dep.arrow.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.arrow</groupId>
                <artifactId>arrow-format</artifactId>
                <version>${dep.arrow.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.arrow</groupId>
                <artifactId>arrow-memory-core</artifactId>
                <version>${dep.arrow.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.arrow</groupId>
                <artifactId>arrow-memory-netty</artifactId>
                <version>${dep.arrow.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.arrow</groupId>
                <artifactId>arrow-vector</artifactId>
                <version>${dep.arrow.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.avro</groupId>
                <artifactId>avro</artifactId>
                <version>${dep.avro.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.avro</groupId>
                <artifactId>avro-mapred</artifactId>
                <version>${dep.avro.version}</version>
            </dependency>

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

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.14.0</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-core</artifactId>
                <version>${dep.iceberg.version}</version>
                <classifier>tests</classifier>
                <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-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.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

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

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

            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-avro</artifactId>
                <version>${dep.parquet.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-column</artifactId>
                <version>${dep.parquet.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.yetus</groupId>
                        <artifactId>audience-annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-common</artifactId>
                <version>${dep.parquet.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.yetus</groupId>
                        <artifactId>audience-annotations</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-encoding</artifactId>
                <version>${dep.parquet.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-format-structures</artifactId>
                <version>${dep.parquet.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-hadoop</artifactId>
                <version>${dep.parquet.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.github.luben</groupId>
                        <artifactId>zstd-jni</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-pool</groupId>
                        <artifactId>commons-pool</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.yetus</groupId>
                        <artifactId>audience-annotations</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.xerial.snappy</groupId>
                        <artifactId>snappy-java</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.parquet</groupId>
                <artifactId>parquet-jackson</artifactId>
                <version>${dep.parquet.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.thrift</groupId>
                <artifactId>libthrift</artifactId>
                <version>0.19.0</version>
                <exclusions>
                    <exclusion>
                        <groupId>jakarta.servlet</groupId>
                        <artifactId>jakarta.servlet-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>3.9.1</version>
                <exclusions>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-cli</groupId>
                        <artifactId>commons-cli</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</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>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

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

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

            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-xml</artifactId>
                <version>4.0.2</version>
            </dependency>

            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-core</artifactId>
                <version>${dep.flyway.version}</version>
            </dependency>

            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-database-oracle</artifactId>
                <version>${dep.flyway.version}</version>
            </dependency>

            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-database-postgresql</artifactId>
                <version>${dep.flyway.version}</version>
            </dependency>

            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-mysql</artifactId>
                <version>${dep.flyway.version}</version>
            </dependency>

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

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

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

            <dependency>
                <groupId>org.locationtech.jts.io</groupId>
                <artifactId>jts-io-common</artifactId>
                <version>1.19.0</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.3.1</version>
            </dependency>

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

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

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

            <dependency>
                <groupId>org.reactivestreams</groupId>
                <artifactId>reactive-streams</artifactId>
                <version>1.0.4</version>
            </dependency>

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

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

            <dependency>
                <groupId>org.threeten</groupId>
                <artifactId>threetenbp</artifactId>
                <version>1.6.8</version>
            </dependency>

            <dependency>
                <groupId>org.xerial.snappy</groupId>
                <artifactId>snappy-java</artifactId>
                <version>1.1.10.5</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>2.2</version>
            </dependency>

            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-protobuf-provider</artifactId>
                <version>${dep.confluent.version}</version>
                <!-- This is under Confluent Community License and it should not be used with compile scope -->
                <scope>provided</scope>
                <exclusions>
                    <!-- Brings in a 2.13.4.2 version of databind -->
                    <exclusion>
                        <groupId>com.fasterxml.jackson.core</groupId>
                        <artifactId>jackson-databind</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-protobuf-types</artifactId>
                <version>${dep.confluent.version}</version>
                <!-- This is under Confluent Community License and it should not be used with compile scope -->
                <scope>provided</scope>
            </dependency>

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

            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-protobuf-serializer</artifactId>
                <version>${dep.confluent.version}</version>
                <!-- This is under Confluent Community License and it should not be used with compile scope -->
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${dep.plugin.surefire.version}</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <configuration>
                        <dependencyReducedPomLocation>${project.build.directory}/pom.xml</dependencyReducedPomLocation>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.skife.maven</groupId>
                    <artifactId>really-executable-jar-maven-plugin</artifactId>
                    <version>2.1.1</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>3.1.1</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>

                            <!-- disable default modernizer violation -->
                            <exclusion>com/google/inject/Provider</exclusion>
                        </exclusions>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <configuration>
                        <rules>
                            <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>
                                    <!-- 1.x versions are banned due to https://www.cve.org/CVERecord?id=CVE-2022-1471 -->
                                    <exclude>org.yaml:snakeyaml</exclude>
                                    <!-- use Guice version -->
                                    <exclude>javax.inject:javax.inject</exclude>
                                    <!-- use Jakarta version -->
                                    <exclude>javax.annotation:javax.annotation-api</exclude>
                                </excludes>
                                <includes combine.children="append">
                                    <!-- 2.x versions are not affected by CVE-2022-1471 -->
                                    <include>org.yaml:snakeyaml:2.+</include>
                                </includes>
                            </bannedDependencies>
                            <requireProfileIdsExist />
                        </rules>
                    </configuration>
                </plugin>

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

                <plugin>
                    <groupId>io.github.git-commit-id</groupId>
                    <artifactId>git-commit-id-maven-plugin</artifactId>
                    <configuration>
                        <runOnlyOnce>true</runOnlyOnce>
                        <injectAllReactorProjects>true</injectAllReactorProjects>
                        <!-- 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>
                        <!-- git-commit-id 6.0.0 incorrectly detects the .git dir, breaking the native-git workaround; see https://github.com/git-commit-id/git-commit-id-maven-plugin/issues/639 -->
                        <!-- When Maven 4.0 is used, this can be replaced by a native Maven property (see MNG-7038), assuming git-commit-id #639 isn't yet fixed -->
                        <dotGitDirectory>${air.main.basedir}/.git</dotGitDirectory>
                    </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>
                                    <dependency>
                                        <groupId>org.apache.httpcomponents.client5</groupId>
                                        <artifactId>httpclient5</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>
                            <exception>
                                <conflictingDependencies>
                                    <dependency>
                                        <groupId>com.amazonaws</groupId>
                                        <artifactId>aws-java-sdk-s3</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>software.amazon.awssdk</groupId>
                                        <artifactId>sdk-core</artifactId>
                                    </dependency>
                                </conflictingDependencies>
                                <resources>
                                    <resource>mime.types</resource>
                                </resources>
                            </exception>
                            <exception>
                                <conflictingDependencies>
                                    <dependency>
                                        <groupId>org.flywaydb</groupId>
                                        <artifactId>flyway-database-oracle</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>org.flywaydb</groupId>
                                        <artifactId>flyway-mysql</artifactId>
                                    </dependency>
                                </conflictingDependencies>
                                <resources>
                                    <resource>org/flywaydb/database/version.txt</resource>
                                </resources>
                            </exception>
                            <exception>
                                <conflictingDependencies>
                                    <dependency>
                                        <groupId>org.apache.parquet</groupId>
                                        <artifactId>parquet-avro</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>org.apache.parquet</groupId>
                                        <artifactId>parquet-column</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>org.apache.parquet</groupId>
                                        <artifactId>parquet-hadoop</artifactId>
                                    </dependency>
                                </conflictingDependencies>
                                <packages>
                                    <package>shaded.parquet.it.unimi.dsi.fastutil</package>
                                </packages>
                            </exception>
                            <exception>
                                <conflictingDependencies>
                                    <dependency>
                                        <groupId>com.google.cloud.bigdataoss</groupId>
                                        <artifactId>gcs-connector</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>io.opencensus</groupId>
                                        <artifactId>opencensus-proto</artifactId>
                                    </dependency>
                                </conflictingDependencies>
                                <resources>
                                    <resource>opencensus/proto/agent/common/v1/common.proto</resource>
                                    <resource>opencensus/proto/agent/metrics/v1/metrics_service.proto</resource>
                                    <resource>opencensus/proto/agent/trace/v1/trace_service.proto</resource>
                                    <resource>opencensus/proto/metrics/v1/metrics.proto</resource>
                                    <resource>opencensus/proto/resource/v1/resource.proto</resource>
                                    <resource>opencensus/proto/stats/v1/stats.proto</resource>
                                    <resource>opencensus/proto/trace/v1/trace.proto</resource>
                                    <resource>opencensus/proto/trace/v1/trace_config.proto</resource>
                                </resources>
                            </exception>
                            <exception>
                                <conflictingDependencies>
                                    <dependency>
                                        <groupId>io.grpc</groupId>
                                        <artifactId>grpc-services</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>org.alluxio</groupId>
                                        <artifactId>alluxio-shaded-client</artifactId>
                                    </dependency>
                                </conflictingDependencies>
                                <resources>
                                    <resource>grpc/binlog/v1/binarylog.proto</resource>
                                    <resource>grpc/health/v1/health.proto</resource>
                                    <resource>grpc/reflection/v1alpha/reflection.proto</resource>
                                    <resource>grpc/channelz/v1/channelz.proto</resource>
                                </resources>
                            </exception>
                            <exception>
                                <conflictingDependencies>
                                    <dependency>
                                        <groupId>com.google.android</groupId>
                                        <artifactId>annotations</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>org.alluxio</groupId>
                                        <artifactId>alluxio-shaded-client</artifactId>
                                    </dependency>
                                </conflictingDependencies>
                                <classes>
                                    <class>android.annotation.SuppressLint</class>
                                    <class>android.annotation.TargetApi</class>
                                </classes>
                            </exception>
                            <exception>
                                <conflictingDependencies>
                                    <dependency>
                                        <groupId>com.google.re2j</groupId>
                                        <artifactId>re2j</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>io.trino</groupId>
                                        <artifactId>re2j</artifactId>
                                    </dependency>
                                </conflictingDependencies>
                                <packages>
                                    <package>com.google.re2j</package>
                                </packages>
                            </exception>
                            <exception>
                                <conflictingDependencies>
                                    <dependency>
                                        <groupId>org.alluxio</groupId>
                                        <artifactId>alluxio-shaded-client</artifactId>
                                    </dependency>
                                    <dependency>
                                        <groupId>com.google.protobuf</groupId>
                                        <artifactId>protobuf-java</artifactId>
                                    </dependency>
                                </conflictingDependencies>
                                <resources>
                                    <resource>google/protobuf/any.proto</resource>
                                    <resource>google/protobuf/api.proto</resource>
                                    <resource>google/protobuf/descriptor.proto</resource>
                                    <resource>google/protobuf/duration.proto</resource>
                                    <resource>google/protobuf/empty.proto</resource>
                                    <resource>google/protobuf/field_mask.proto</resource>
                                    <resource>google/protobuf/source_context.proto</resource>
                                    <resource>google/protobuf/struct.proto</resource>
                                    <resource>google/protobuf/timestamp.proto</resource>
                                    <resource>google/protobuf/type.proto</resource>
                                    <resource>google/protobuf/wrappers.proto</resource>
                                </resources>
                            </exception>
                        </exceptions>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>de.qaware.maven</groupId>
                    <artifactId>go-offline-maven-plugin</artifactId>
                    <version>1.2.8</version>
                    <configuration>
                        <dynamicDependencies>
                            <DynamicDependency>
                                <groupId>ca.vanzyl.provisio.maven.plugins</groupId>
                                <artifactId>provisio-maven-plugin</artifactId>
                                <version>1.0.20</version>
                                <repositoryType>PLUGIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-javadoc-plugin</artifactId>
                                <version>3.2.0</version>
                                <repositoryType>PLUGIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.apache.yetus</groupId>
                                <artifactId>audience-annotations</artifactId>
                                <version>0.8.0</version>
                                <repositoryType>PLUGIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>io.airlift.drift</groupId>
                                <artifactId>drift-javadoc</artifactId>
                                <version>${dep.drift.version}</version>
                                <repositoryType>PLUGIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>io.takari.maven.plugins</groupId>
                                <artifactId>takari-lifecycle-plugin</artifactId>
                                <version>${dep.takari.version}</version>
                                <repositoryType>PLUGIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>com.google.errorprone</groupId>
                                <artifactId>error_prone_core</artifactId>
                                <version>${dep.errorprone.version}</version>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.junit.jupiter</groupId>
                                <artifactId>junit-jupiter-engine</artifactId>
                                <!-- legacy version which Surefire seems to need for some reason -->
                                <version>5.3.2</version>
                                <type>pom</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.junit.jupiter</groupId>
                                <artifactId>junit-jupiter-params</artifactId>
                                <!-- legacy version which Surefire seems to need for some reason -->
                                <version>5.3.2</version>
                                <type>pom</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.mockito</groupId>
                                <artifactId>mockito-core</artifactId>
                                <!-- legacy version which Surefire seems to need for some reason -->
                                <version>2.28.2</version>
                                <type>pom</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.powermock</groupId>
                                <artifactId>powermock-reflect</artifactId>
                                <!-- legacy version which Surefire seems to need for some reason -->
                                <version>2.0.5</version>
                                <type>pom</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>junit</groupId>
                                <artifactId>junit</artifactId>
                                <!-- legacy version which Surefire seems to need for some reason -->
                                <version>4.13</version>
                                <type>pom</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.testng</groupId>
                                <artifactId>testng</artifactId>
                                <!-- legacy version which Surefire seems to need for some reason -->
                                <version>5.10</version>
                                <type>pom</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.assertj</groupId>
                                <artifactId>assertj-core</artifactId>
                                <!-- legacy version which Surefire seems to need for some reason -->
                                <version>3.9.1</version>
                                <type>pom</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.hamcrest</groupId>
                                <artifactId>hamcrest-library</artifactId>
                                <!-- legacy version which Surefire seems to need for some reason -->
                                <version>1.3</version>
                                <type>pom</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.easytesting</groupId>
                                <artifactId>fest-assert</artifactId>
                                <!-- legacy version which Surefire seems to need for some reason -->
                                <version>1.4</version>
                                <type>pom</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.apache.maven.surefire</groupId>
                                <artifactId>surefire-testng</artifactId>
                                <version>${dep.plugin.surefire.version}</version>
                                <type>jar</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>org.junit.platform</groupId>
                                <artifactId>junit-platform-launcher</artifactId>
                                <!-- legacy version which Surefire seems to need for some reason -->
                                <version>1.10.0</version>
                                <type>jar</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>io.airlift</groupId>
                                <artifactId>event-http</artifactId>
                                <!-- it's not resolved by dependency-plugin correctly -->
                                <version>${dep.airlift.version}</version>
                                <type>jar</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>io.airlift</groupId>
                                <artifactId>jmx-http-rpc</artifactId>
                                <!-- it's not resolved by dependency-plugin correctly -->
                                <version>${dep.airlift.version}</version>
                                <type>jar</type>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>com.google.protobuf</groupId>
                                <artifactId>protoc</artifactId>
                                <type>exe</type>
                                <classifier>linux-x86_64</classifier>
                                <version>${dep.protobuf.version}</version>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                            <DynamicDependency>
                                <groupId>com.google.protobuf</groupId>
                                <artifactId>protoc</artifactId>
                                <type>exe</type>
                                <classifier>linux-aarch_64</classifier>
                                <version>${dep.protobuf.version}</version>
                                <repositoryType>MAIN</repositoryType>
                            </DynamicDependency>
                        </dynamicDependencies>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>io.trino</groupId>
                <artifactId>trino-maven-plugin</artifactId>
                <version>12</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-surefire-plugin</artifactId>
                <configuration>
                    <!-- TODO: these should use https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven-config-params -->
                    <!-- use system properties to work around https://youtrack.jetbrains.com/issue/IDEA-339034 -->
                    <systemPropertyVariables>
                        <junit.jupiter.execution.timeout.thread.mode.default>SEPARATE_THREAD</junit.jupiter.execution.timeout.thread.mode.default>
                        <junit.jupiter.extensions.autodetection.enabled>true</junit.jupiter.extensions.autodetection.enabled>
                        <junit.jupiter.execution.parallel.enabled>true</junit.jupiter.execution.parallel.enabled>
                        <junit.jupiter.execution.parallel.mode.default>concurrent</junit.jupiter.execution.parallel.mode.default>
                        <junit.jupiter.execution.parallel.mode.classes.default>concurrent</junit.jupiter.execution.parallel.mode.classes.default>
                    </systemPropertyVariables>
                    <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 -->
                            <!-- Do not fail on error-prone's warnings even for modules using air.compiler.fail-warnings -->
                            <!-- TODO silence warnings we choose to ignore and raise important warnings to error and then remove <failOnWarning> -->
                            <failOnWarning>false</failOnWarning>
                            <compilerArgs>
                                <arg>-XDcompilePolicy=simple</arg>
                                <arg>
                                    -Xplugin:ErrorProne \
                                    -Xep:AnnotateFormatMethod:ERROR \
                                    -Xep:BadComparable:ERROR \
                                    -Xep:BadInstanceof:ERROR \
                                    -Xep:BoxedPrimitiveConstructor:ERROR \
                                    -Xep:ClassCanBeStatic:ERROR \
                                    -Xep:CompareToZero:ERROR \
                                    -Xep:DefaultCharset:ERROR \
                                    -Xep:DistinctVarargsChecker:ERROR \
                                    -Xep:DoNotCallSuggester:OFF \
                                    -Xep:EmptyBlockTag:ERROR \
                                    <!-- we would rather want the opposite check -->
                                    -Xep:EqualsGetClass:OFF \
                                    -Xep:EqualsIncompatibleType:ERROR \
                                    -Xep:FallThrough:ERROR \
                                    -Xep:GetClassOnEnum:ERROR \
                                    <!-- needs some careful inspection -->
                                    -Xep:GuardedBy:OFF \
                                    -Xep:HidingField:ERROR \
                                    <!-- This check requires list fields to be declared as ImmutableList, which is not in line with project's code style -->
                                    -Xep:Immutable:OFF \
                                    <!-- flags enums with List fields even if initialized with ImmutableList, and other false positives -->
                                    -Xep:ImmutableEnumChecker:OFF \
                                    -Xep:ImmutableSetForContains:ERROR \
                                    <!-- fields/variables should not differ only in case -->
                                    -Xep:InconsistentCapitalization:ERROR \
                                    -Xep:InconsistentHashCode:ERROR \
                                    -Xep:InjectOnConstructorOfAbstractClass:ERROR \
                                    -Xep:MissingCasesInEnumSwitch:ERROR \
                                    -Xep:MissingOverride:ERROR \
                                    <!-- Sometimes our javadoc contains just a @see directive -->
                                    -Xep:MissingSummary:OFF \
                                    -Xep:MutablePublicArray:ERROR \
                                    -Xep:NarrowCalculation:ERROR \
                                    -Xep:NarrowingCompoundAssignment:ERROR \
                                    -Xep:NullOptional:ERROR \
                                    -Xep:NullableOptional:ERROR \
                                    -Xep:ObjectToString:ERROR \
                                    -Xep:OptionalNotPresent:ERROR \
                                    -Xep:OrphanedFormatString:ERROR \
                                    -Xep:Overrides:ERROR \
                                    <!-- flags List fields even if initialized with ImmutableList -->
                                    -Xep:PreferredInterfaceType:OFF \
                                    -Xep:PrimitiveArrayPassedToVarargsMethod:ERROR \
                                    -Xep:RethrowReflectiveOperationExceptionAsLinkageError:OFF \
                                    -Xep:StaticAssignmentOfThrowable:ERROR \
                                    -Xep:StreamResourceLeak:ERROR \
                                    -Xep:UnicodeEscape:ERROR \
                                    -Xep:UnnecessaryMethodReference:ERROR \
                                    -Xep:UnnecessaryOptionalGet:ERROR \
                                    -Xep:UnnecessaryParentheses:ERROR \
                                    <!-- Enable when https://github.com/google/error-prone/pull/3837 is fixed -->
                                    <!-- -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>
                <!-- set as properties, not configuration, to allow overriding them -->
                <gib.buildDownstream>true</gib.buildDownstream>
                <gib.buildUpstream>true</gib.buildUpstream>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.github.gitflow-incremental-builder</groupId>
                        <artifactId>gitflow-incremental-builder</artifactId>
                        <version>4.5.1</version>
                        <extensions>true</extensions>
                        <configuration>
                            <disableIfBranchMatches>master</disableIfBranchMatches>
                            <compareToMergeBase>true</compareToMergeBase>
                            <uncommitted>true</uncommitted>
                            <untracked>true</untracked>
                            <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>
