snowflake-ingest-sdk

Used in: 0 components

Overview

Description

Snowflake Ingest SDK

Snippets

<dependency>
    <groupId>net.snowflake</groupId>
    <artifactId>snowflake-ingest-sdk</artifactId>
    <version>4.0.0-unshaded</version>
</dependency>

Maven POM File

<project 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>

  <!--Arifact name and version information-->
  <groupId>net.snowflake</groupId>
  <artifactId>snowflake-ingest-sdk</artifactId>
  <version>4.0.0-unshaded</version>
  <packaging>jar</packaging>
  <name>Snowflake Ingest SDK</name>
  <description>Snowflake Ingest SDK</description>
  <url>https://www.snowflake.net/</url>

  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <name>Snowflake Support Team</name>
      <email>snowflake-java@snowflake.net</email>
      <organization>Snowflake Computing</organization>
      <organizationUrl>https://www.snowflake.net</organizationUrl>
    </developer>
  </developers>

  <scm>
    <connection>scm:git:git://github.com/snowflakedb/snowflake-ingest-java</connection>
    <url>https://github.com/snowflakedb/snowflake-ingest-java/tree/master</url>
  </scm>

  <!--Set our Language Level to Java 8-->
  <properties>
    <amazonaws.version>1.12.655</amazonaws.version>
    <apache.httpclient.version>4.5.14</apache.httpclient.version>
    <apache.httpcomponents.version>4.4.16</apache.httpcomponents.version>
    <avro.version>1.11.4</avro.version>
    <bouncycastle.version>1.78.1</bouncycastle.version>
    <codehaus.version>1.9.13</codehaus.version>
    <commonscodec.version>1.18.0</commonscodec.version>
    <commonscollections.version>3.2.2</commonscollections.version>
    <commonscompress.version>1.27.1</commonscompress.version>
    <commonsconfiguration2.version>2.10.1</commonsconfiguration2.version>
    <commonsio.version>2.17.0</commonsio.version>
    <commonslang3.version>3.17.0</commonslang3.version>
    <commonstext.version>1.13.0</commonstext.version>
    <fasterxml.version>2.18.1</fasterxml.version>
    <google.httpclient.version>1.45.0</google.httpclient.version>
    <grpc.version>1.67.1</grpc.version>
    <gson.version>2.11.0</gson.version>
    <guava.version>33.3.1-jre</guava.version>
    <hadoop.version>3.4.1</hadoop.version>
    <iceberg.version>1.6.1</iceberg.version>
    <jacoco.skip.instrument>true</jacoco.skip.instrument>
    <jacoco.version>0.8.5</jacoco.version>
    <license.processing.dependencyJarsDir>${project.build.directory}/dependency-jars</license.processing.dependencyJarsDir>
    <license.processing.dependencyListFile>${project.build.directory}/dependency-list.txt</license.processing.dependencyListFile>
    <license.processing.resourcesRoot>${project.build.directory}/generated-licenses-info</license.processing.resourcesRoot>
    <license.processing.targetDir>${license.processing.resourcesRoot}/META-INF/third-party-licenses</license.processing.targetDir>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <net.minidev.version>2.5.2</net.minidev.version>
    <netty.version>4.1.119.Final</netty.version>
    <nimbusds.version>9.48</nimbusds.version>
    <objenesis.version>3.1</objenesis.version>
    <parquet.version>1.14.4</parquet.version>
    <powermock.version>2.0.9</powermock.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <protobuf.version>4.27.5</protobuf.version>
    <shadeBase>net.snowflake.ingest.internal</shadeBase>
    <slf4j.version>1.7.36</slf4j.version>
    <snappy.version>1.1.10.5</snappy.version>
    <snowjdbc.version>3.22.0</snowjdbc.version>
    <threetenbp.version>1.7.0</threetenbp.version>
    <yetus.version>0.13.0</yetus.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>${fasterxml.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-bom</artifactId>
        <version>${netty.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.http-client</groupId>
        <artifactId>google-http-client</artifactId>
        <version>${google.httpclient.version}</version>
        <exclusions>
          <exclusion>
            <groupId>com.google.j2objc</groupId>
            <artifactId>j2objc-annotations</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.google.http-client</groupId>
        <artifactId>google-http-client-gson</artifactId>
        <version>${google.httpclient.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>${protobuf.version}</version>
      </dependency>
      <dependency>
        <groupId>com.nimbusds</groupId>
        <artifactId>nimbus-jose-jwt</artifactId>
        <version>${nimbusds.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commonscodec.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>${commonscollections.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commonsio.version}</version>
      </dependency>
      <dependency>
        <groupId>net.minidev</groupId>
        <artifactId>json-smart</artifactId>
        <version>${net.minidev.version}</version>
      </dependency>
      <dependency>
        <groupId>net.snowflake</groupId>
        <artifactId>snowflake-jdbc-thin</artifactId>
        <version>${snowjdbc.version}</version>
        <exclusions>
          <exclusion>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.errorprone</groupId>
            <artifactId>error_prone_annotations</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <exclusion>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-context</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.annotation</groupId>
            <artifactId>javax.annotation-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro</artifactId>
        <version>${avro.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>${commonscompress.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-configuration2</artifactId>
        <version>${commonsconfiguration2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commonslang3.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>${hadoop.version}</version>
        <exclusions>
          <exclusion>
            <groupId>ch.qos.reload4j</groupId>
            <artifactId>reload4j</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.github.pjfanning</groupId>
            <artifactId>jersey-json</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.re2j</groupId>
            <artifactId>re2j</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-servlet</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-cli</groupId>
            <artifactId>commons-cli</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
          </exclusion>
          <exclusion>
            <groupId>dnsjava</groupId>
            <artifactId>dnsjava</artifactId>
          </exclusion>
          <exclusion>
            <groupId>io.dropwizard.metrics</groupId>
            <artifactId>metrics-core</artifactId>
          </exclusion>
          <exclusion>
            <groupId>io.netty</groupId>
            <artifactId>netty-handler</artifactId>
          </exclusion>
          <exclusion>
            <groupId>io.netty</groupId>
            <artifactId>netty-transport-native-epoll</artifactId>
          </exclusion>
          <exclusion>
            <groupId>jakarta.activation</groupId>
            <artifactId>jakarta.activation-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-configuration2</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-math3</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-text</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-annotations</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-auth</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.hadoop.thirdparty</groupId>
            <artifactId>hadoop-shaded-protobuf_3_25</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.kerby</groupId>
            <artifactId>kerb-core</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.codehaus.jettison</groupId>
            <artifactId>jettison</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.eclipse.jetty</groupId>
            <artifactId>jetty-util</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-webapp</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-reload4j</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${apache.httpclient.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>${apache.httpcomponents.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-api</artifactId>
        <version>${iceberg.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-core</artifactId>
        <version>${iceberg.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-parquet</artifactId>
        <version>${iceberg.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.parquet</groupId>
        <artifactId>parquet-column</artifactId>
        <version>${parquet.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.parquet</groupId>
        <artifactId>parquet-common</artifactId>
        <version>${parquet.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.parquet</groupId>
        <artifactId>parquet-hadoop</artifactId>
        <version>${parquet.version}</version>
        <exclusions>
          <exclusion>
            <groupId>com.github.luben</groupId>
            <artifactId>zstd-jni</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.yetus</groupId>
        <artifactId>audience-annotations</artifactId>
        <version>${yetus.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk18on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk18on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>${codehaus.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-jaxrs</artifactId>
        <version>${codehaus.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-xc</artifactId>
        <version>${codehaus.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.woodstox</groupId>
        <artifactId>stax2-api</artifactId>
        <version>4.2.1</version>
      </dependency>
      <dependency>
        <groupId>org.objenesis</groupId>
        <artifactId>objenesis</artifactId>
        <version>${objenesis.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.threeten</groupId>
        <artifactId>threetenbp</artifactId>
        <version>${threetenbp.version}</version>
      </dependency>
      <dependency>
        <groupId>org.xerial.snappy</groupId>
        <artifactId>snappy-java</artifactId>
        <version>${snappy.version}</version>
      </dependency>

      <!--JUnit so that we can make some basic unit tests-->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy</artifactId>
        <version>1.14.9</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy-agent</artifactId>
        <version>1.14.9</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>${commonstext.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-core</artifactId>
        <version>${hadoop.version}</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-yarn-common</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-reload4j</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.26.3</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>3.7.7</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.openjdk.jmh</groupId>
        <artifactId>jmh-core</artifactId>
        <version>1.34</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.openjdk.jmh</groupId>
        <artifactId>jmh-generator-annprocess</artifactId>
        <version>1.34</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <!--All of our needed dependencies-->
  <dependencies>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-core</artifactId>
      <version>${amazonaws.version}</version>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-s3</artifactId>
      <version>${amazonaws.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
    </dependency>
    <!--Jackson Databind api-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
    </dependency>

    <!--https://mvnrepository.com/artifact/com.github.ben-manes.caffeine/caffeine-->
    <!--We need to use 2.x version, which is compatible with Java 8-->
    <dependency>
      <groupId>com.github.ben-manes.caffeine</groupId>
      <artifactId>caffeine</artifactId>
      <version>2.9.3</version>
      <exclusions>
        <!--Dependencies are excluded because they are causing enforcer failures (they are already pulled in by Guava)-->
        <exclusion>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker-qual</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.google.api</groupId>
      <artifactId>gax</artifactId>
      <version>2.57.0</version>
      <exclusions>
        <exclusion>
          <groupId>com.google.auto.value</groupId>
          <artifactId>auto-value-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.code.findbugs</groupId>
          <artifactId>jsr305</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.j2objc</groupId>
          <artifactId>j2objc-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.grpc</groupId>
          <artifactId>grpc-context</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.annotation</groupId>
          <artifactId>javax.annotation-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-core</artifactId>
      <version>2.47.0</version>
      <exclusions>
        <exclusion>
          <groupId>com.google.auto.value</groupId>
          <artifactId>auto-value-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.code.findbugs</groupId>
          <artifactId>jsr305</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.j2objc</groupId>
          <artifactId>j2objc-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.grpc</groupId>
          <artifactId>grpc-context</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.annotation</groupId>
          <artifactId>javax.annotation-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker-qual</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-storage</artifactId>
      <version>2.44.1</version>
      <exclusions>
        <exclusion>
          <groupId>com.google.android</groupId>
          <artifactId>annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.auto.value</groupId>
          <artifactId>auto-value-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.code.findbugs</groupId>
          <artifactId>jsr305</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.j2objc</groupId>
          <artifactId>j2objc-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.grpc</groupId>
          <artifactId>grpc-context</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.grpc</groupId>
          <artifactId>grpc-netty-shaded</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.grpc</groupId>
          <artifactId>grpc-xds</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.annotation</groupId>
          <artifactId>javax.annotation-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker-qual</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>animal-sniffer-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.conscrypt</groupId>
          <artifactId>conscrypt-openjdk-uber</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.google.code.findbugs</groupId>
      <artifactId>jsr305</artifactId>
      <version>3.0.2</version>
      <!--Not required at runtime-->
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <exclusions>
        <exclusion>
          <groupId>com.google.code.findbugs</groupId>
          <artifactId>jsr305</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.j2objc</groupId>
          <artifactId>j2objc-annotations</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-storage</artifactId>
      <version>5.0.0</version>
    </dependency>

    <!--jwt token for key pair authentication with GS-->
    <dependency>
      <groupId>com.nimbusds</groupId>
      <artifactId>nimbus-jose-jwt</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>

    <!--https://mvnrepository.com/artifact/io.dropwizard.metrics/metrics-core-->
    <dependency>
      <groupId>io.dropwizard.metrics</groupId>
      <artifactId>metrics-core</artifactId>
      <version>4.1.22</version>
    </dependency>

    <!--https://mvnrepository.com/artifact/io.dropwizard.metrics/metrics-jmx-->
    <dependency>
      <groupId>io.dropwizard.metrics</groupId>
      <artifactId>metrics-jmx</artifactId>
      <version>4.1.22</version>
    </dependency>

    <!--https://mvnrepository.com/artifact/io.dropwizard.metrics/metrics-jvm-->
    <dependency>
      <groupId>io.dropwizard.metrics</groupId>
      <artifactId>metrics-jvm</artifactId>
      <version>4.1.22</version>
    </dependency>
    <!--Prefer grpc-netty instead of grpc-netty-shaded from google-cloud-storage-->
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-netty</artifactId>
      <version>${grpc.version}</version>
      <exclusions>
        <exclusion>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_annotations</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>net.bytebuddy</groupId>
      <artifactId>byte-buddy-agent</artifactId>
    </dependency>
    <!--Snowflake JDBC used to connect to the service-->
    <dependency>
      <groupId>net.snowflake</groupId>
      <artifactId>snowflake-jdbc-thin</artifactId>
    </dependency>

    <!--Transitive dependency; declared here to use a specific version-->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-text</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.iceberg</groupId>
      <artifactId>iceberg-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.iceberg</groupId>
      <artifactId>iceberg-core</artifactId>
      <exclusions>
        <exclusion>
          <groupId>io.airlift</groupId>
          <artifactId>aircompressor</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents.client5</groupId>
          <artifactId>httpclient5</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.iceberg</groupId>
      <artifactId>iceberg-parquet</artifactId>
      <exclusions>
        <exclusion>
          <groupId>io.airlift</groupId>
          <artifactId>aircompressor</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.parquet</groupId>
          <artifactId>parquet-avro</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!--https://mvnrepository.com/artifact/org.apache.parquet/parquet-hadoop-->
    <dependency>
      <groupId>org.apache.parquet</groupId>
      <artifactId>parquet-column</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.parquet</groupId>
      <artifactId>parquet-common</artifactId>
      <exclusions>
        <!--Dependencies are excluded because CDDL + GPLv2 with classpath exception license is not approved-->
        <exclusion>
          <groupId>javax.annotation</groupId>
          <artifactId>javax.annotation-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.parquet</groupId>
      <artifactId>parquet-hadoop</artifactId>
    </dependency>

    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcpkix-jdk18on</artifactId>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-jdk18on</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>com.github.luben</groupId>
      <artifactId>zstd-jni</artifactId>
      <version>1.5.6-5</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.xerial.snappy</groupId>
      <artifactId>snappy-java</artifactId>
      <scope>runtime</scope>
    </dependency>

    <!--JUnit so that we can make some basic unit tests-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.assertj</groupId>
      <artifactId>assertj-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.openjdk.jmh</groupId>
      <artifactId>jmh-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.openjdk.jmh</groupId>
      <artifactId>jmh-generator-annprocess</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-api-mockito2</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-core</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
    </dependency>
    <!--Change the 'test' scope to 'runtime' to enable console logging in examples-->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>${slf4j.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>${project.artifactId}</finalName>
    <resources>
      <resource>
        <filtering>true</filtering>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>${license.processing.resourcesRoot}</directory>
      </resource>
    </resources>

    <!--disable default maven deploy plugin since we are using gpg:sign-and-deploy-file-->
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.6.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.4.1</version>
          <dependencies>
            <dependency>
              <groupId>com.google.cloud.tools</groupId>
              <artifactId>linkage-checker-enforcer-rules</artifactId>
              <version>1.5.13</version>
            </dependency>
            <dependency>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>extra-enforcer-rules</artifactId>
              <version>1.3</version>
              <exclusions>
                <exclusion>
                  <groupId>org.eclipse.aether</groupId>
                  <artifactId>aether-util</artifactId>
                </exclusion>
              </exclusions>
            </dependency>
          </dependencies>
        </plugin>

        <!--Need to define the maven-failsafe-plugin here-->
        <!--http://maven.apache.org/surefire/maven-failsafe-plugin/plugin-info.html-->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>3.0.0-M5</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.2.5</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>${jacoco.version}</version>
          <configuration>
            <skip>${jacoco.skip.instrument}</skip>
            <excludes>
              <exclude>**/*SnowflakeStreamingIngestExample*</exclude>
              <exclude>**/*SnowflakeIngestBasicExample*</exclude>
              <exclude>**/*IngestExampleHelper*</exclude>
            </excludes>
          </configuration>
          <executions>
            <execution>
              <id>pre-unit-test</id>
              <goals>
                <goal>prepare-agent</goal>
              </goals>
              <configuration>
                <destFile>target/jacoco-ut.exec</destFile>
              </configuration>
            </execution>
            <execution>
              <id>post-unit-test</id>
              <goals>
                <goal>report</goal>
              </goals>
              <phase>test</phase>
              <configuration>
                <dataFile>target/jacoco-ut.exec</dataFile>
                <outputDirectory>target/jacoco-ut</outputDirectory>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>com.github.ekryd.sortpom</groupId>
        <artifactId>sortpom-maven-plugin</artifactId>
        <version>3.0.1</version>
        <configuration>
          <createBackupFile>false</createBackupFile>
          <expandEmptyElements>false</expandEmptyElements>
          <indentSchemaLocation>true</indentSchemaLocation>
          <sortDependencies>scope,groupId,artifactId</sortDependencies>
          <sortDependencyExclusions>groupId,artifactId</sortDependencyExclusions>
          <sortExecutions>true</sortExecutions>
          <sortModules>true</sortModules>
          <sortPlugins>groupId,artifactId</sortPlugins>
          <sortProperties>true</sortProperties>
          <verifyFail>stop</verifyFail>
          <verifyFailOn>strict</verifyFailOn>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>verify</goal>
            </goals>
            <phase>validate</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>net.snowflake.ingest.SimpleIngestManager</mainClass>
            </manifest>
          </archive>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.5.1</version>
        <inherited>true</inherited>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>analyze</id>
            <goals>
              <goal>analyze-only</goal>
            </goals>
            <configuration>
              <failOnWarning>true</failOnWarning>
              <ignoreNonCompile>true</ignoreNonCompile>
              <ignoredDependencies>
                <!--We defined these as direct dependencies (as opposed to just declaring it in dependencyManagement)
                                                                                                                                                                                                                                                to workaround https://issues.apache.org/jira/browse/MNG-7982. Now the dependency analyzer complains that
                                                                                                                                                                                                                                                the dependency is unused, so we ignore it here-->
                <ignoredDependency>org.apache.commons:commons-compress</ignoredDependency>
                <ignoredDependency>org.apache.commons:commons-configuration2</ignoredDependency>
                <ignoredDependency>io.grpc:grpc-netty</ignoredDependency>
              </ignoredDependencies>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-best-practices</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <banDuplicateClasses>
                  <ignoreClasses>
                    <ignoreClass>META-INF/versions/*/org/bouncycastle/*</ignoreClass>
                    <ignoreClass>META-INF/versions/*/com/fasterxml/jackson/core/io/doubleparser/*</ignoreClass>
                  </ignoreClasses>
                  <findAllDuplicates>true</findAllDuplicates>
                  <ignoreWhenIdentical>true</ignoreWhenIdentical>
                </banDuplicateClasses>

                <banDuplicatePomDependencyVersions />
                <bannedDependencies />
                <dependencyConvergence />
                <requireUpperBoundDeps />
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>enforce-maven</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>3.5</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.10.4</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <additionalparam>-Xdoclint:none</additionalparam>
              <source>8</source>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.0.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/TestSimpleIngestLocal.java</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <version>2.0.1</version>
        <configuration>
          <errorRemedy>failFast</errorRemedy>
          <!--The list of allowed licenses. If you see the build failing due to "There are some forbidden licenses used, please
                                                                                                                                                                                              check your dependencies", verify the conditions of the license and add the reference to it here.-->
          <includedLicenses>
            <includedLicense>Apache License 2.0</includedLicense>
            <includedLicense>BSD 2-Clause License</includedLicense>
            <includedLicense>3-Clause BSD License</includedLicense>
            <includedLicense>The MIT License</includedLicense>
            <includedLicense>EDL 1.0</includedLicense>
            <includedLicense>The Go License</includedLicense>
            <includedLicense>Bouncy Castle Licence</includedLicense>
            <includedLicense>BSD New license</includedLicense>
          </includedLicenses>
          <excludedScopes>test,provided,system</excludedScopes>
          <failOnBlacklist>true</failOnBlacklist>
          <licenseMerges>
            <licenseMerge>Apache License 2.0
                            |The Apache License, Version 2.0
                            |The Apache Software License, Version 2.0
                            |Apache-2.0
                            |Apache License, Version 2.0
                            |Apache 2.0
              |Apache License V2.0
              |Apache 2</licenseMerge>
            <licenseMerge>BSD 2-Clause License
              |The BSD License |BSD</licenseMerge>
            <licenseMerge>The MIT License|MIT License|MIT license</licenseMerge>
            <licenseMerge>3-Clause BSD License|BSD-3-Clause</licenseMerge>
            <licenseMerge>The Go License|Go License</licenseMerge>
          </licenseMerges>
        </configuration>
        <executions>
          <execution>
            <id>add-third-party</id>
            <goals>
              <goal>add-third-party</goal>
            </goals>
            <phase>package</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>checkLinkageErrors</id>
      <activation>
        <property>
          <!--Only check linkage errors for unshaded builds-->
          <name>not-shadeDep</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>enforce-linkage-checker</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <!--Disabled in SNOW-1230527-->
                <phase>none</phase>
                <!--<phase>verify</phase>-->
                <configuration>
                  <rules>
                    <LinkageCheckerRule implementation="com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule">
                      <reportOnlyReachable>true</reportOnlyReachable>
                      <exclusionFile>${basedir}/linkage-checker-exclusion-rules.xml</exclusionFile>
                      <level>WARN</level>
                    </LinkageCheckerRule>
                    <bannedDependencies>
                      <excludes>
                        <!--JUnit 4 is not allowed on the classpath to prevent its accidental use-->
                        <!--<exclude>junit:junit</exclude>-->
                      </excludes>
                    </bannedDependencies>
                  </rules>
                </configuration>
              </execution>

            </executions>
          </plugin>

        </plugins>
      </build>
    </profile>
    <profile>
      <id>checkShadedContent</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>check-shaded-content</id>
                <goals>
                  <goal>exec</goal>
                </goals>
                <phase>verify</phase>
                <configuration>
                  <executable>${basedir}/scripts/check_content.sh</executable>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>shadeDep</id>
      <activation>
        <property>
          <name>!not-shadeDep</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <!--Compile the list of SDK dependencies in 'compile' and 'runtime' scopes. This list is an entry point for the license processing python script.-->
              <execution>
                <goals>
                  <goal>list</goal>
                </goals>
                <phase>generate-resources</phase>
                <configuration>
                  <includeScope>runtime</includeScope>
                  <outputFile>${license.processing.dependencyListFile}</outputFile>
                </configuration>
              </execution>
              <!--Copy all project dependencies to target/dependency-jars. License processing Python script will look here for license files of SDK dependencies.-->
              <execution>
                <id>copy-dependencies</id>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <phase>generate-resources</phase>
                <configuration>
                  <outputDirectory>${license.processing.dependencyJarsDir}</outputDirectory>
                  <overWriteReleases>false</overWriteReleases>
                  <overWriteSnapshots>false</overWriteSnapshots>
                  <overWriteIfNewer>true</overWriteIfNewer>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!--Relocate all dependencies to internal to solve dependency conflict problem-->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.5.2</version>
            <configuration>
              <artifactSet>
                <excludes>
                  <exclude>org.slf4j:slf4j-api</exclude>
                  <exclude>com.github.luben:zstd-jni</exclude>
                </excludes>
              </artifactSet>
              <relocations>
                <relocation>
                  <pattern>android.annotation</pattern>
                  <shadedPattern>${shadeBase}.android.annotation</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.nimbusds</pattern>
                  <shadedPattern>${shadeBase}.com.nimbusds</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.bouncycastle</pattern>
                  <shadedPattern>${shadeBase}.org.bouncycastle</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>net.jcip</pattern>
                  <shadedPattern>${shadeBase}.net.jcip</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>net.minidev</pattern>
                  <shadedPattern>${shadeBase}.net.minidev</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>net.snowflake.client</pattern>
                  <shadedPattern>${shadeBase}.net.snowflake.client</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.snowflake.client.jdbc</pattern>
                  <shadedPattern>${shadeBase}.com.snowflake.client.jdbc</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.fasterxml</pattern>
                  <shadedPattern>${shadeBase}.com.fasterxml</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.objectweb</pattern>
                  <shadedPattern>${shadeBase}.org.objectweb</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.microsoft</pattern>
                  <shadedPattern>${shadeBase}.com.microsoft</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.yammer</pattern>
                  <shadedPattern>${shadeBase}.com.yammer</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.avro</pattern>
                  <shadedPattern>${shadeBase}.org.apache.avro</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.commons</pattern>
                  <shadedPattern>${shadeBase}.org.apache.commons</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.hadoop</pattern>
                  <shadedPattern>${shadeBase}.org.apache.hadoop</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.hc</pattern>
                  <shadedPattern>${shadeBase}.org.apache.hc</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.http</pattern>
                  <shadedPattern>${shadeBase}.org.apache.http</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.iceberg</pattern>
                  <shadedPattern>${shadeBase}.org.apache.iceberg</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.parquet</pattern>
                  <shadedPattern>${shadeBase}.org.apache.parquet</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.threeten.bp</pattern>
                  <shadedPattern>${shadeBase}.org.threeten.bp</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.conscrypt</pattern>
                  <shadedPattern>${shadeBase}.org.conscrypt</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.joda</pattern>
                  <shadedPattern>${shadeBase}.org.joda</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.jsoup</pattern>
                  <shadedPattern>${shadeBase}.org.jsoup</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.xbill</pattern>
                  <shadedPattern>${shadeBase}.org.xbill</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.xerial</pattern>
                  <shadedPattern>${shadeBase}.org.xerial</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.grpc</pattern>
                  <shadedPattern>${shadeBase}.io.grpc</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.opencensus</pattern>
                  <shadedPattern>${shadeBase}.io.opencensus</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.opentelemetry</pattern>
                  <shadedPattern>${shadeBase}.io.opentelemetry</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.perfmark</pattern>
                  <shadedPattern>${shadeBase}.io.perfmark</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.netty</pattern>
                  <shadedPattern>${shadeBase}.io.netty</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.amazonaws</pattern>
                  <shadedPattern>${shadeBase}.com.amazonaws</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.google.api.gax</pattern>
                  <shadedPattern>${shadeBase}.com.google.api.gax</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.google.cloud</pattern>
                  <shadedPattern>${shadeBase}.com.google.cloud</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.github.benmanes</pattern>
                  <shadedPattern>${shadeBase}.com.github.benmanes</shadedPattern>
                </relocation>
                <!--shaded.parquet contains dependencies shaded in parquet itself. Here we are shading it for the second time-->
                <relocation>
                  <pattern>shaded.parquet</pattern>
                  <shadedPattern>${shadeBase}.shaded.parquet</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.codehaus</pattern>
                  <shadedPattern>${shadeBase}.org.codehaus</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.jcraft</pattern>
                  <shadedPattern>${shadeBase}.com.jcraft</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.eclipse</pattern>
                  <shadedPattern>${shadeBase}.org.eclipse</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.checkerframework</pattern>
                  <shadedPattern>${shadeBase}.org.checkerframework</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.codahale</pattern>
                  <shadedPattern>${shadeBase}.com.codahale</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.ctc</pattern>
                  <shadedPattern>${shadeBase}.com.ctc</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.thoughtworks</pattern>
                  <shadedPattern>${shadeBase}.com.thoughtworks</shadedPattern>
                </relocation>
                <!--This belongs to org.apache.arrow:arrow-vector-->
                <relocation>
                  <pattern>codegen</pattern>
                  <shadedPattern>${shadeBase}.codegen</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javax.annotation</pattern>
                  <shadedPattern>${shadeBase}.javax.annotation</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javax.activation</pattern>
                  <shadedPattern>${shadeBase}.javax.activation</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.airlift.compress</pattern>
                  <shadedPattern>${shadeBase}.io.airlift.compress</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.roaringbitmap</pattern>
                  <shadedPattern>${shadeBase}.org.roaringbitmap</shadedPattern>
                </relocation>
              </relocations>
              <filters>
                <filter>
                  <artifact>*:*</artifact>
                  <excludes>
                    <exclude>assets/org/apache/commons/math3/exception/util/LocalizedFormats_fr.properties</exclude>
                    <exclude>about.html</exclude>
                    <exclude>mozilla/public-suffix-list.txt</exclude>
                    <exclude>META-INF/ASL2.0</exclude>
                    <exclude>META-INF/FastDoubleParser-LICENSE</exclude>
                    <exclude>META-INF/FastDoubleParser-NOTICE</exclude>
                    <exclude>META-INF/licenses*/**</exclude>
                    <exclude>META-INF/LICENSE*</exclude>
                    <exclude>META-INF/NOTICE*</exclude>
                    <exclude>META-INF/DEPENDENCIES</exclude>
                    <exclude>META-INF/maven/**</exclude>
                    <exclude>META-INF/services/com.fasterxml.*</exclude>
                    <exclude>META-INF/thirdparty-LICENSE</exclude>
                    <exclude>META-INF/*.xml</exclude>
                    <exclude>META-INF/*.SF</exclude>
                    <exclude>META-INF/*.DSA</exclude>
                    <exclude>META-INF/*.RSA</exclude>
                    <exclude>LICENSE</exclude>
                    <exclude>NOTICE</exclude>
                    <exclude>iceberg-build.properties</exclude>
                    <exclude>google/protobuf/**/*.proto</exclude>
                    <exclude>THIRD-PARTY.txt</exclude>
                  </excludes>
                </filter>
                <filter>
                  <artifact>org.slf4j:slf4j-simple</artifact>
                  <excludes>
                    <exclude>org/slf4j/**</exclude>
                  </excludes>
                </filter>
              </filters>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer" />
              </transformers>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>shade</goal>
                </goals>
                <phase>package</phase>
              </execution>
            </executions>
          </plugin>
          <!--Plugin executes license processing Python script, which copies third party license files into the directory
                                                                                                                                                                                                        target/generated-licenses-info/META-INF/third-party-licenses, which is then included in the shaded JAR.-->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>process-third-party-licenses</id>
                <goals>
                  <goal>exec</goal>
                </goals>
                <phase>generate-resources</phase>
                <configuration>
                  <executable>python3</executable>
                  <arguments>
                    <argument>${project.basedir}/scripts/process_licenses.py</argument>
                    <argument>${license.processing.dependencyListFile}</argument>
                    <argument>${license.processing.dependencyJarsDir}</argument>
                    <argument>${license.processing.targetDir}</argument>
                  </arguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>ossrh-deploy</id>
      <activation>
        <property>
          <name>ossrh-deploy</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <goals>
                  <goal>sign-and-deploy-file</goal>
                </goals>
                <phase>deploy</phase>
                <configuration>
                  <file>target/${project.artifactId}.jar</file>
                  <repositoryId>ossrh</repositoryId>
                  <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
                  <pomFile>generated_public_pom.xml</pomFile>
                  <javadoc>target/${project.artifactId}-javadoc.jar</javadoc>
                  <sources>target/${project.artifactId}-sources.jar</sources>
                  <keyname>${env.GPG_KEY_ID}</keyname>
                  <passphrase>${env.GPG_KEY_PASSPHRASE}</passphrase>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>snapshot-deploy</id>
      <activation>
        <property>
          <name>snapshot-deploy</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <goals>
                  <goal>sign-and-deploy-file</goal>
                </goals>
                <phase>deploy</phase>
                <configuration>
                  <file>target/${project.artifactId}.jar</file>
                  <repositoryId>snapshot</repositoryId>
                  <url>https://nexus.int.snowflakecomputing.com/repository/Snapshots/</url>
                  <pomFile>generated_public_pom.xml</pomFile>
                  <javadoc>target/${project.artifactId}-javadoc.jar</javadoc>
                  <sources>target/${project.artifactId}-sources.jar</sources>
                  <keyname>${env.GPG_KEY_ID}</keyname>
                  <passphrase>${env.GPG_KEY_PASSPHRASE}</passphrase>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>ghActionsIT</id>
      <activation>
        <property>
          <name>ghActionsIT</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
              <groups>${failsafe.groups}</groups>
              <excludedGroups>${failsafe.excludedGroups}</excludedGroups>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                </goals>
              </execution>
              <execution>
                <id>verify_github_actions_it</id>
                <goals>
                  <goal>verify</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${jacoco.version}</version>
            <configuration>
              <skip>${jacoco.skip.instrument}</skip>
            </configuration>
            <executions>
              <execution>
                <id>pre-unit-test</id>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
                <configuration>
                  <destFile>target/jacoco-ut.exec</destFile>
                </configuration>
              </execution>
              <execution>
                <id>post-unit-test</id>
                <goals>
                  <goal>report</goal>
                </goals>
                <phase>test</phase>
                <configuration>
                  <dataFile>target/jacoco-ut.exec</dataFile>
                  <outputDirectory>target/jacoco-ut</outputDirectory>
                </configuration>
              </execution>
              <execution>
                <id>pre-integration-test</id>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
                <phase>pre-integration-test</phase>
                <configuration>
                  <destFile>target/jacoco-it.exec</destFile>
                </configuration>
              </execution>
              <execution>
                <id>post-integration-test</id>
                <goals>
                  <goal>report</goal>
                </goals>
                <phase>post-integration-test</phase>
                <configuration>
                  <dataFile>target/jacoco-it.exec</dataFile>
                  <outputDirectory>target/jacoco-it</outputDirectory>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>