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

    <groupId>io.trino</groupId>
    <artifactId>trino-root</artifactId>
    <version>352</version>

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

    <inceptionYear>2012</inceptionYear>

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

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

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

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

        <project.build.targetJdk>11</project.build.targetJdk>
        <air.java.version>11.0.7</air.java.version>
        <air.modernizer.java-version>8</air.modernizer.java-version>

        <dep.accumulo.version>1.7.4</dep.accumulo.version>
        <dep.accumulo-hadoop.version>2.7.7-1</dep.accumulo-hadoop.version>
        <dep.antlr.version>4.9</dep.antlr.version>
        <dep.airlift.version>202</dep.airlift.version>
        <dep.packaging.version>${dep.airlift.version}</dep.packaging.version>
        <dep.aws-sdk.version>1.11.946</dep.aws-sdk.version>
        <dep.okhttp.version>3.14.9</dep.okhttp.version>
        <dep.jdbi3.version>3.17.0</dep.jdbi3.version>
        <dep.oracle.version>19.3.0.0</dep.oracle.version>
        <dep.drift.version>1.14</dep.drift.version>
        <dep.scribejava.version>6.9.0</dep.scribejava.version>
        <dep.selenium.version>3.141.59</dep.selenium.version>
        <dep.tempto.version>183</dep.tempto.version>
        <dep.gcs.version>2.0.0</dep.gcs.version>
        <dep.errorprone.version>2.5.1</dep.errorprone.version>
        <dep.testcontainers.version>1.15.1</dep.testcontainers.version>
        <dep.docker-java.version>3.2.7</dep.docker-java.version>
        <dep.coral.version>1.0.12</dep.coral.version>
        <dep.confluent.version>5.5.2</dep.confluent.version>

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

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

    <modules>
        <module>client/trino-cli</module>
        <module>client/trino-client</module>
        <module>client/trino-jdbc</module>
        <module>core/trino-main</module>
        <module>core/trino-parser</module>
        <module>core/trino-server</module>
        <module>core/trino-server-main</module>
        <module>core/trino-server-rpm</module>
        <module>core/trino-spi</module>
        <module>docs</module>
        <module>lib/trino-array</module>
        <module>lib/trino-geospatial-toolkit</module>
        <module>lib/trino-matching</module>
        <module>lib/trino-memory-context</module>
        <module>lib/trino-orc</module>
        <module>lib/trino-parquet</module>
        <module>lib/trino-plugin-toolkit</module>
        <module>lib/trino-rcfile</module>
        <module>lib/trino-record-decoder</module>
        <module>plugin/trino-accumulo</module>
        <module>plugin/trino-accumulo-iterators</module>
        <module>plugin/trino-atop</module>
        <module>plugin/trino-base-jdbc</module>
        <module>plugin/trino-bigquery</module>
        <module>plugin/trino-blackhole</module>
        <module>plugin/trino-cassandra</module>
        <module>plugin/trino-druid</module>
        <module>plugin/trino-elasticsearch</module>
        <module>plugin/trino-example-http</module>
        <module>plugin/trino-geospatial</module>
        <module>plugin/trino-google-sheets</module>
        <module>plugin/trino-hive</module>
        <module>plugin/trino-hive-hadoop2</module>
        <module>plugin/trino-iceberg</module>
        <module>plugin/trino-jmx</module>
        <module>plugin/trino-kafka</module>
        <module>plugin/trino-kinesis</module>
        <module>plugin/trino-kudu</module>
        <module>plugin/trino-local-file</module>
        <module>plugin/trino-memory</module>
        <module>plugin/trino-memsql</module>
        <module>plugin/trino-ml</module>
        <module>plugin/trino-mongodb</module>
        <module>plugin/trino-mysql</module>
        <module>plugin/trino-oracle</module>
        <module>plugin/trino-password-authenticators</module>
        <module>plugin/trino-phoenix</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-sqlserver</module>
        <module>plugin/trino-teradata-functions</module>
        <module>plugin/trino-thrift</module>
        <module>plugin/trino-thrift-api</module>
        <module>plugin/trino-thrift-testing-server</module>
        <module>plugin/trino-tpcds</module>
        <module>plugin/trino-tpch</module>
        <module>service/trino-proxy</module>
        <module>service/trino-verifier</module>
        <module>testing/trino-benchmark</module>
        <module>testing/trino-benchmark-driver</module>
        <module>testing/trino-benchto-benchmarks</module>
        <module>testing/trino-product-tests</module>
        <module>testing/trino-product-tests-launcher</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-kafka</module>
        <module>testing/trino-testng-services</module>
        <module>testing/trino-tests</module>
    </modules>

    <repositories>
        <repository>
            <id>confluent</id>
            <url>http://packages.confluent.io/maven/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

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

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

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

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

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

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

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

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

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-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-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-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-hadoop2</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-jdbc</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-matching</artifactId>
                <version>${project.version}</version>
            </dependency>

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

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

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

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

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

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

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

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

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

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-password-authenticators</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-toolkit</artifactId>
                <version>${project.version}</version>
            </dependency>

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

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

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

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

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

            <dependency>
                <groupId>io.trino</groupId>
                <artifactId>trino-resource-group-managers</artifactId>
                <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-testing</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-testng-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-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>

            <!-- Trino external -->
            <dependency>
                <groupId>io.trino.cassandra</groupId>
                <artifactId>cassandra-driver</artifactId>
                <version>3.1.4-3</version>
            </dependency>

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

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

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

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

            <dependency>
                <groupId>io.trino.tempto</groupId>
                <artifactId>tempto-core</artifactId>
                <version>${dep.tempto.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.datastax.cassandra</groupId>
                        <artifactId>cassandra-driver-core</artifactId>
                    </exclusion>
                    <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>com.datastax.cassandra</groupId>
                        <artifactId>cassandra-driver-core</artifactId>
                    </exclusion>
                    <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>
                <exclusions>
                    <exclusion>
                        <groupId>com.datastax.cassandra</groupId>
                        <artifactId>cassandra-driver-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>io.trino.tempto</groupId>
                <artifactId>tempto-runner</artifactId>
                <version>${dep.tempto.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.datastax.cassandra</groupId>
                        <artifactId>cassandra-driver-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            <dependency>
                <groupId>com.esri.geometry</groupId>
                <artifactId>esri-geometry-api</artifactId>
                <version>2.2.2</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>

            <!-- TODO: move this to Airbase -->
            <dependency>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-cbor</artifactId>
                <version>${dep.jackson.version}</version>
            </dependency>

            <dependency>
                <groupId>com.github.scribejava</groupId>
                <artifactId>scribejava-apis</artifactId>
                <version>${dep.scribejava.version}</version>
            </dependency>

            <dependency>
                <groupId>com.github.scribejava</groupId>
                <artifactId>scribejava-core</artifactId>
                <version>${dep.scribejava.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.cloud.bigdataoss</groupId>
                <artifactId>gcs-connector</artifactId>
                <version>hadoop2-${dep.gcs.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>com.google.cloud.bigdataoss</groupId>
                <artifactId>gcsio</artifactId>
                <version>${dep.gcs.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.cloud.bigdataoss</groupId>
                <artifactId>util</artifactId>
                <version>${dep.gcs.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.cloud.bigdataoss</groupId>
                <artifactId>util-hadoop</artifactId>
                <version>hadoop2-${dep.gcs.version}</version>
            </dependency>

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

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

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

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

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

            <dependency>
                <groupId>com.microsoft.sqlserver</groupId>
                <artifactId>mssql-jdbc</artifactId>
                <version>8.4.1.jre8</version>
            </dependency>

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

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

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

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

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

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

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

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

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

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

            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>0.9.0</version>
            </dependency>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>3.5.8</version>
                <exclusions>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

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

            <dependency>
                <groupId>org.jdbi</groupId>
                <artifactId>jdbi</artifactId>
                <version>2.78</version>
            </dependency>

            <dependency>
                <groupId>org.jdbi</groupId>
                <artifactId>jdbi3-core</artifactId>
                <version>${dep.jdbi3.version}</version>
            </dependency>

            <dependency>
                <groupId>org.jdbi</groupId>
                <artifactId>jdbi3-sqlobject</artifactId>
                <version>${dep.jdbi3.version}</version>
            </dependency>

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

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

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

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

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

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

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

            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-api</artifactId>
                <version>${dep.selenium.version}</version>
            </dependency>

            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-chrome-driver</artifactId>
                <version>${dep.selenium.version}</version>
            </dependency>

            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>${dep.selenium.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-remote-driver</artifactId>
                <version>${dep.selenium.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-support</artifactId>
                <version>${dep.selenium.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

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

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

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

            <dependency>
                <groupId>org.xerial.snappy</groupId>
                <artifactId>snappy-java</artifactId>
                <version>1.1.7.3</version>
            </dependency>

            <!-- Transitive dependency. Avoid different versions being used -->
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>1.26</version>
            </dependency>

            <dependency>
                <groupId>org.zeroturnaround</groupId>
                <artifactId>zt-exec</artifactId>
                <version>1.12</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

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

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

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                </plugin>

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

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

                <plugin>
                    <groupId>org.gaul</groupId>
                    <artifactId>modernizer-maven-plugin</artifactId>
                    <configuration>
                        <violationsFiles>
                            <violationsFile>${air.main.basedir}/.mvn/modernizer/violations.xml</violationsFile>
                        </violationsFiles>
                        <exclusionPatterns>
                            <exclusionPattern>org/joda/time/.*</exclusionPattern>
                        </exclusionPatterns>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <configuration>
                        <rules>
                            <compound implementation="com.github.ferstl.maven.pomenforcers.CompoundPedanticEnforcer">
                                <enforcers>POM_SECTION_ORDER,MODULE_ORDER,DEPENDENCY_MANAGEMENT_ORDER,DEPENDENCY_ORDER</enforcers>
                                <pomSectionPriorities>modelVersion,parent,groupId,artifactId,version,name,description,packaging,url,inceptionYear,licenses,scm,properties,modules</pomSectionPriorities>
                                <dependenciesGroupIdPriorities>io.trino,io.airlift</dependenciesGroupIdPriorities>
                                <dependenciesOrderBy>scope,groupId,artifactId</dependenciesOrderBy>
                                <dependenciesScopePriorities>compile,runtime,provided,test</dependenciesScopePriorities>
                                <dependencyManagementOrderBy>groupId,artifactId</dependencyManagementOrderBy>
                                <dependencyManagementGroupIdPriorities>io.trino,io.airlift</dependencyManagementGroupIdPriorities>
                            </compound>
                            <requireUpperBoundDeps>
                                <excludes combine.children="append">
                                    <!-- TODO: fix this in Airlift resolver -->
                                    <exclude>org.codehaus.plexus:plexus-utils</exclude>
                                    <exclude>com.google.guava:guava</exclude>
                                    <exclude>com.fasterxml.jackson.core:jackson-core</exclude>
                                    <exclude>com.google.j2objc:j2objc-annotations</exclude>
                                </excludes>
                            </requireUpperBoundDeps>
                        </rules>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>com.github.ferstl</groupId>
                            <artifactId>pedantic-pom-enforcers</artifactId>
                            <version>1.3.2</version>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <configuration>
                        <preparationGoals>clean verify -DskipTests</preparationGoals>
                    </configuration>
                </plugin>

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

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

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

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

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

    <profiles>
        <profile>
            <id>tests-with-dependencies</id>
            <!--
                Assembles an uber (fat) jar that includes the entire "test" scope classpath for a module.

                For example after running:

                ./mvnw clean install -P tests-with-dependencies -pl plugin/trino-geospatial

                The uber jar that contains the entire "test" scope class path of the "trino-geospatial"
                is created and placed to that modules target directory:

                ./plugin/trino-geospatial/target/trino-geospatial-351-SNAPSHOT-tests-with-dependencies.jar

                Now using this jar we can easily run any benchmark from that module via command line:

                java \
                  -cp ./plugin/trino-geospatial/target/trino-geospatial-*-tests-with-dependencies.jar \
                  io.trino.plugin.geospatial.BenchmarkSTIntersects
            -->
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <configuration>
                            <descriptor>${air.main.basedir}/.mvn/assembly/tests-with-dependencies.xml</descriptor>
                        </configuration>
                        <executions>
                            <execution>
                                <id>make-assembly</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <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">
                            <compilerArgs>
                                <arg>-XDcompilePolicy=simple</arg>
                                <!-- TODO enable more checks, i.e. remove "-XepDisableAllChecks" -->
                                <arg>
                                    -Xplugin:ErrorProne
                                    -XepExcludedPaths:.*/target/generated-(|test-)sources/.*
                                    -XepDisableAllChecks
                                    -Xep:ArrayEquals:ERROR
                                    -Xep:ArrayHashCode:ERROR
                                    -Xep:ArrayToString:ERROR
                                    -Xep:ArraysAsListPrimitiveArray:ERROR
                                    -Xep:BadInstanceof:ERROR
                                    -Xep:BoxedPrimitiveConstructor:ERROR
                                    -Xep:ClassCanBeStatic:ERROR
                                    -Xep:CompareToZero:ERROR
                                    -Xep:ComparingThisWithNull:ERROR
                                    -Xep:EqualsIncompatibleType:ERROR
                                    -Xep:FallThrough:ERROR
                                    -Xep:FormatString:ERROR
                                    -Xep:GetClassOnClass:ERROR
                                    -Xep:ImmutableSetForContains:ERROR
                                    -Xep:InconsistentHashCode:ERROR
                                    -Xep:InjectOnConstructorOfAbstractClass:ERROR
                                    -Xep:MissingOverride:ERROR
                                    -Xep:NullOptional:ERROR
                                    -Xep:ObjectToString:ERROR
                                    -Xep:OptionalEquality:ERROR
                                    -Xep:OptionalMapUnusedValue:ERROR
                                    -Xep:StaticQualifiedUsingExpression:ERROR
                                    -Xep:UnnecessaryMethodReference:ERROR
                                    -Xep:UnnecessaryOptionalGet:ERROR
                                    -Xep:UnusedVariable:ERROR
                                    -Xep:UseEnumSwitch:ERROR
                                </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>
    </profiles>
</project>
