<?xml version="1.0"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

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

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

-->
<project xmlns="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>org.apache.drill.exec</groupId>
    <artifactId>exec-parent</artifactId>
    <version>2.0.0-SNAPSHOT</version>
  </parent>

  <artifactId>drill-jdbc-all</artifactId>
  <name>Drill : Exec : JDBC JAR with all dependencies</name>

  <!-- Since we are packaging hadoop dependencies under the namespace with "oadd." prefix by default,
       "package.namespace.prefix" equals to "oadd.". It can be overridden if necessary within any profile -->
  <properties>
    <package.namespace.prefix>oadd.</package.namespace.prefix>
    <jdbc-all-jar.maxsize>47000000</jdbc-all-jar.maxsize>
  </properties>

  <dependencies>
    <!--
      Notes for excluding unwanted code from the JDBC driver to keep its
      size down.

      First use conventional Maven exclusions, most commonly required under
      drill-java-exec, to try to exclude the dependency. If you cannot see
      the code you want exclude in this module's mvn:dependency-tree under
      a dependency where you could add an exclusion then you will need to
      use exclusion rules in the maven-shade-plugin instead.

      Once you've excluded something that was previously present in the JDBC
      driver you need to test it. Note that neither the JDBC unit tests nor
      drill-embedded exercise the JDBC driver JAR produced by *this module*,
      even though they both connect to Drill using JDBC. So to test you need
      to launch a JDBC client like DBeaver or a short Java CLI program that
      loads the driver JAR created by this module.
    -->

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.drill</groupId>
      <artifactId>drill-common</artifactId>
      <version>${project.version}</version>
      <exclusions>
        <exclusion>
          <artifactId>javassist</artifactId>
          <groupId>javassist</groupId>
        </exclusion>
        <exclusion>
          <groupId>io.dropwizard.metrics</groupId>
          <artifactId>metrics-servlets</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>org.apache.drill.exec</groupId>
      <artifactId>drill-java-exec</artifactId>
      <version>${project.version}</version>
      <exclusions>
        <exclusion>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.javassist</groupId>
          <artifactId>javassist</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.hbase</groupId>
          <artifactId>hbase</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.bouncycastle</groupId>
          <artifactId>bcpkix-jdk15on</artifactId>
        </exclusion>
        <exclusion>
          <groupId>commons-codec</groupId>
          <artifactId>commons-codec</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.glassfish.jersey.core</groupId>
          <artifactId>jersey-common</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.glassfish.jersey.containers</groupId>
          <artifactId>jersey-container-jetty-servlet</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.glassfish.jersey.media</groupId>
          <artifactId>jersey-media-multipart</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.glassfish.jersey.ext</groupId>
          <artifactId>jersey-mvc-freemarker</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.glassfish.jersey.media</groupId>
          <artifactId>jersey-media-json-jackson</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.glassfish.jersey.inject</groupId>
          <artifactId>jersey-hk2</artifactId>
        </exclusion>
        <exclusion>
          <artifactId>jetty-server</artifactId>
          <groupId>org.eclipse.jetty</groupId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-client</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.avro</groupId>
          <artifactId>avro-mapred</artifactId>
        </exclusion>
        <exclusion>
          <artifactId>jetty-servlet</artifactId>
          <groupId>org.eclipse.jetty</groupId>
        </exclusion>
        <exclusion>
          <artifactId>parquet-hadoop</artifactId>
          <groupId>org.apache.parquet</groupId>
        </exclusion>
        <exclusion>
          <artifactId>parquet-column</artifactId>
          <groupId>org.apache.parquet</groupId>
        </exclusion>
        <exclusion>
          <artifactId>parquet-common</artifactId>
          <groupId>org.apache.parquet</groupId>
        </exclusion>
        <exclusion>
          <artifactId>infinispan-core</artifactId>
          <groupId>org.infinispan</groupId>
        </exclusion>
        <exclusion>
          <artifactId>asm-util</artifactId>
          <groupId>org.ow2.asm</groupId>
        </exclusion>
        <exclusion>
          <artifactId>codemodel</artifactId>
          <groupId>com.sun.codemodel</groupId>
        </exclusion>
        <exclusion>
          <artifactId>asm-commons</artifactId>
          <groupId>org.ow2.asm</groupId>
        </exclusion>
        <exclusion>
          <artifactId>infinispan-tree</artifactId>
          <groupId>org.infinispan</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jetty-util</artifactId>
          <groupId>org.mortbay.jetty</groupId>
        </exclusion>
        <exclusion>
          <artifactId>freemarker</artifactId>
          <groupId>org.freemarker</groupId>
        </exclusion>
        <exclusion>
          <artifactId>hazelcast</artifactId>
          <groupId>com.hazelcast</groupId>
        </exclusion>
        <exclusion>
          <groupId>nl.basjes.parse.httpdlog</groupId>
          <artifactId>httpdlog-parser</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.kohsuke</groupId>
          <artifactId>libpam4j</artifactId>
        </exclusion>
        <exclusion>
          <groupId>sqlline</groupId>
          <artifactId>sqlline</artifactId>
        </exclusion>
        <exclusion>
          <artifactId>stream</artifactId>
          <groupId>com.clearspring.analytics</groupId>
        </exclusion>
        <exclusion>
          <groupId>org.honton.chas.hocon</groupId>
          <artifactId>jackson-dataformat-hocon</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.owasp.encoder</groupId>
          <artifactId>encoder</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.dropbox.core</groupId>
          <artifactId>dropbox-core-sdk</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-compress</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.airlift</groupId>
          <artifactId>aircompressor</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.swagger.core.v3</groupId>
          <artifactId>swagger-jaxrs2</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.swagger.core.v3</groupId>
          <artifactId>swagger-jaxrs2-servlet-initializer-v2</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.squareup.okhttp3</groupId>
          <artifactId>okhttp</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.tdunning</groupId>
          <artifactId>t-digest</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.bettercloud</groupId>
          <artifactId>vault-java-driver</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.esri.geometry</groupId>
          <artifactId>esri-geometry-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.yahoo.datasketches</groupId>
          <artifactId>sketches-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>${calcite.groupId}</groupId>
          <artifactId>calcite-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>${calcite.groupId}</groupId>
          <artifactId>calcite-linq4j</artifactId>
        </exclusion>
        <exclusion>
          <groupId>net.sf.jpam</groupId>
          <artifactId>jpam</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.drill.exec</groupId>
      <artifactId>drill-jdbc</artifactId>
      <version>${project.version}</version>
      <exclusions>
        <exclusion>
          <artifactId>drill-storage-hive-core</artifactId>
          <groupId>org.apache.drill.contrib.storage-hive</groupId>
        </exclusion>
        <exclusion>
          <artifactId>foodmart-data-json</artifactId>
          <groupId>net.hydromatic</groupId>
        </exclusion>
      </exclusions>
    </dependency>

    <!-- Test Dependencies -->
    <dependency>
      <groupId>org.apache.drill</groupId>
      <artifactId>drill-common</artifactId>
      <classifier>tests</classifier>
      <version>${project.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.drill.exec</groupId>
      <artifactId>drill-java-exec</artifactId>
      <classifier>tests</classifier>
      <version>${project.version}</version>
      <scope>provided</scope>
    </dependency>

  </dependencies>

  <build>

    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>

    <plugins>

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>define-classpath</id>
            <phase>integration-test</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <exportAntProperties>true</exportAntProperties>
              <target>
                <property name="app.class.path" refid="maven.test.classpath"/>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>3.0.0-M3</version>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>

        <configuration>
          <argLine>-Xms512m -Xmx3g -Ddrill.exec.http.enabled=false -Djava.net.preferIPv4Stack=true
            -Ddrill.exec.sys.store.provider.local.write=false
            -Dorg.apache.drill.exec.server.Drillbit.system_options="org.apache.drill.exec.compile.ClassTransformer.scalar_replacement=on"
            -XX:MaxDirectMemorySize=3072M
            ${junit.args} -ea
          </argLine>
          <additionalClasspathElements>
            <additionalClasspathElements>${settings.localRepository}/org/junit/vintage/junit-vintage-engine/${junit.version}/junit-vintage-engine-${junit.version}.jar
            </additionalClasspathElements>
            <additionalClasspathElements>${settings.localRepository}/org/hamcrest/hamcrest/${hamcrest.version}/hamcrest-${hamcrest.version}.jar</additionalClasspathElements>
            <additionalClasspathElements>${project.build.directory}/test-classes/</additionalClasspathElements>
          </additionalClasspathElements>

          <systemPropertyVariables>
            <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
            <app.class.path>${app.class.path}</app.class.path>
            <project.version>${project.version}</project.version>
          </systemPropertyVariables>
          <useSystemClassLoader>false</useSystemClassLoader>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-shade-plugin</artifactId>
        <configuration>
          <shadedArtifactAttached>false</shadedArtifactAttached>
          <createDependencyReducedPom>true</createDependencyReducedPom>
          <!-- TODO DRILL-4336: try to move the dependencyReducedPom out of the default location (the module root).
               Putting it here caused the target directory to be run as a submodule (oddly
               only when trying to run the maven release goal) -->
          <!--dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation-->
          <!-- TODO DRILL-4336: an attempt to fix the issue by moving the file elsewhere, had issues executing
               but may be able to be modified to to fix the issue-->
          <!--dependencyReducedPomLocation>${project.build.directory}/generated/shade/dependency-reduced-pom.xml</dependencyReducedPomLocation-->
          <minimizeJar>false</minimizeJar>

          <!-- Exclude dependencies at artifact level. Format is "groupId:artifactId[[:type]:classifier]" -->
          <artifactSet>
            <includes>
              <include>*:*</include>
            </includes>
            <excludes>
              <exclude>io.protostuff:*</exclude>
              <exclude>org.pentaho:*</exclude>
              <exclude>org.msgpack:*</exclude>
              <exclude>xerces:*</exclude>
              <exclude>xalan:*</exclude>
              <exclude>org.apache.avro:*</exclude>
              <exclude>org.mongodb:*</exclude>
              <exclude>com.googlecode.json-simple:*</exclude>
              <exclude>dom4j:*</exclude>
              <exclude>org.hibernate:*</exclude>
              <exclude>antlr:*</exclude>
              <exclude>com.dropbox.*</exclude>
              <exclude>com.github.stefanbirkner</exclude>
              <exclude>org.ow2.asm:*</exclude>
              <exclude>com.univocity:*</exclude>
              <exclude>com.twitter:*</exclude>
              <exclude>org.apache.parquet:*</exclude>
              <exclude>javax.inject:*</exclude>
              <exclude>com.beust:*</exclude>
              <exclude>jline:*</exclude>
              <exclude>org.xerial.snappy:*</exclude>
              <exclude>org.apache.avro:*</exclude>
              <exclude>org.tukaani:*</exclude>
              <exclude>org.apache.velocity:*</exclude>
              <exclude>net.hydromatic:linq4j</exclude>
              <exclude>org.mortbay.jetty:*</exclude>
              <exclude>org.slf4j:jul-to-slf4j</exclude>
              <exclude>org.hamcrest:hamcrest-core</exclude>
              <exclude>org.mockito:mockito-core</exclude>
              <exclude>org.objenesis:objenesis</exclude>
              <exclude>org.eclipse.jetty:*</exclude>
              <exclude>javax.xml.bind:jaxb-api</exclude>
              <exclude>javax.xml.stream:stax-api</exclude>
              <exclude>javax.activation:activation</exclude>
              <exclude>commons-cli:commons-cli</exclude>
              <exclude>org.apache.commons:commons-collections4</exclude>
              <exclude>commons-io:commons-io</exclude>
              <exclude>commons-beanutils:commons-beanutils-core:jar:*</exclude>
              <exclude>commons-beanutils:commons-beanutils:jar:*</exclude>
              <exclude>com.google.code.findbugs:jsr305:*</exclude>
              <exclude>dnsjava:dnsjava:jar:*</exclude>
              <exclude>io.netty:netty-tcnative:jar:*</exclude>
              <exclude>io.netty:netty-tcnative-classes:jar:*</exclude>
              <exclude>com.nimbusds:*</exclude>
              <exclude>org.apache.yetus:*</exclude>
            </excludes>
          </artifactSet>
          <relocations>
            <!-- Relocate Drill classes to minimize classloader hell. -->
            <relocation>
              <pattern>org.apache.drill.exec.</pattern>
              <shadedPattern>oadd.org.apache.drill.exec.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.drill.common.</pattern>
              <shadedPattern>oadd.org.apache.drill.common.</shadedPattern>
            </relocation>

            <!-- Move dependencies out of path -->
            <relocation>
              <pattern>antlr.</pattern>
              <shadedPattern>oadd.antlr.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>antlr.</pattern>
              <shadedPattern>oadd.antlr.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>io.</pattern>
              <shadedPattern>oadd.io.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>javacc.</pattern>
              <shadedPattern>oadd.javacc.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>java_cup.</pattern>
              <shadedPattern>oadd.java_cup.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>javassist.</pattern>
              <shadedPattern>oadd.javassist.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>jline.</pattern>
              <shadedPattern>oadd.jline.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>license.</pattern>
              <shadedPattern>oadd.license.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>net.</pattern>
              <shadedPattern>oadd.net.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>parquet.</pattern>
              <shadedPattern>oadd.parquet.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>test.</pattern>
              <shadedPattern>oadd.test.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>trax.</pattern>
              <shadedPattern>oadd.trax.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.antlr.</pattern>
              <shadedPattern>oadd.org.antlr.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.codehaus.</pattern>
              <shadedPattern>oadd.org.codehaus.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.eigenbase.</pattern>
              <shadedPattern>oadd.org.eigenbase.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.hamcrest.</pattern>
              <shadedPattern>oadd.org.hamcrest.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.jboss.</pattern>
              <shadedPattern>oadd.org.jboss.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.joda.</pattern>
              <shadedPattern>oadd.org.joda.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.json.</pattern>
              <shadedPattern>oadd.org.json.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.mockito.</pattern>
              <shadedPattern>oadd.org.mockito.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.msgpack.</pattern>
              <shadedPattern>oadd.org.msgpack.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.objectweb.</pattern>
              <shadedPattern>oadd.org.objectweb.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.objensis.</pattern>
              <shadedPattern>oadd.org.objensis.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.pentaho.</pattern>
              <shadedPattern>oadd.org.pentaho.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.reflections.</pattern>
              <shadedPattern>oadd.org.reflections.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.tukaani.</pattern>
              <shadedPattern>oadd.org.tukaani.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.xerial.</pattern>
              <shadedPattern>oadd.org.xerial.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.beust.</pattern>
              <shadedPattern>oadd.com.beust.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.carrotsearch.</pattern>
              <shadedPattern>oadd.com.carrotsearch.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.codahale.</pattern>
              <shadedPattern>oadd.com.codahale.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.dyuproject.</pattern>
              <shadedPattern>oadd.com.dyuproject.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.fasterxml.</pattern>
              <shadedPattern>oadd.com.fasterxml.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.google.</pattern>
              <shadedPattern>oadd.com.google.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.thoughtworks.</pattern>
              <shadedPattern>oadd.com.thoughtworks.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.typesafe.</pattern>
              <shadedPattern>oadd.com.typesafe.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.univocity.</pattern>
              <shadedPattern>oadd.com.univocity.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.avro.</pattern>
              <shadedPattern>oadd.org.apache.avro.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.bcel.</pattern>
              <shadedPattern>oadd.org.apache.bcel.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.calcite.</pattern>
              <shadedPattern>oadd.org.apache.calcite.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.commons.</pattern>
              <shadedPattern>oadd.org.apache.commons.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.curator.</pattern>
              <shadedPattern>oadd.org.apache.curator.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.html.</pattern>
              <shadedPattern>oadd.org.apache.html.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.jute.</pattern>
              <shadedPattern>oadd.org.apache.jute.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.log4j.</pattern>
              <shadedPattern>oadd.org.apache.log4j.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.regexp.</pattern>
              <shadedPattern>oadd.org.apache.regexp.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.velocity.</pattern>
              <shadedPattern>oadd.org.apache.velocity.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.wml.</pattern>
              <shadedPattern>oadd.org.apache.wml.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.xalan.</pattern>
              <shadedPattern>oadd.org.apache.xalan.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.xerces.</pattern>
              <shadedPattern>oadd.org.apache.xerces.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.xml.</pattern>
              <shadedPattern>oadd.org.apache.xml.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.xmlcommons.</pattern>
              <shadedPattern>oadd.org.apache.xmlcommons.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.xpath.</pattern>
              <shadedPattern>oadd.org.apache.xpath.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.zookeeper.</pattern>
              <shadedPattern>oadd.org.apache.zookeeper.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.hadoop.</pattern>
              <shadedPattern>oadd.org.apache.hadoop.</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.ctc.wstx.</pattern>
              <shadedPattern>oadd.com.ctc.wstx.</shadedPattern>
            </relocation>
          </relocations>
          <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
              <resource>drill-module.conf</resource>
            </transformer>
          </transformers>

          <!-- Remove the particular directory or class level dependency from final jar -->
          <filters>
            <filter>
              <artifact>*:*</artifact>
              <excludes>
                <exclude>**/logback.xml</exclude>
                <exclude>**/LICENSE.txt</exclude>
                <exclude>**/*.java</exclude>
                <exclude>META-INF/ASL2.0</exclude>
                <exclude>META-INF/NOTICE.txt</exclude>
                <exclude>META-INF/drill-module-scan/**</exclude>
                <exclude>META-INF/jboss-beans.xml</exclude>
                <exclude>META-INF/license/**</exclude>
                <exclude>META-INF/maven/**</exclude>
                <exclude>META-INF/native/**</exclude>
                <exclude>META-INF/services/com.fasterxml.*</exclude>
                <exclude>META-INF/services/javax.ws.*</exclude>
                <exclude>META-INF/**/*.properties</exclude>
                <exclude>**/org.codehaus.commons.compiler.properties</exclude>
                <exclude>module-info.class</exclude>
                <exclude>**/*.SF</exclude>
                <exclude>**/*.RSA</exclude>
                <exclude>**/*.DSA</exclude>
                <exclude>javax/*</exclude>
                <exclude>javax/activation/**</exclude>
                <exclude>javax/annotation-api/**</exclude>
                <exclude>javax/inject/**</exclude>
                <exclude>javax/servlet-api/**</exclude>
                <exclude>javax/json/**</exclude>
                <exclude>javax/ws/**</exclude>
                <exclude>rest/**</exclude>
                <exclude>*.tokens</exclude>
                <exclude>codegen/**</exclude>
                <exclude>bootstrap-storage-plugins.json</exclude>
                <exclude>org/apache/parquet</exclude>
                <exclude>org/apache/drill/shaded/guava/com/google/common/escape/**</exclude>
                <exclude>org/apache/drill/shaded/guava/com/google/common/eventbus/**</exclude>
                <exclude>org/apache/drill/shaded/guava/com/google/common/html/**</exclude>
                <exclude>org/apache/drill/shaded/guava/com/google/common/net/**</exclude>
                <exclude>org/apache/drill/shaded/guava/com/google/common/xml/**</exclude>
                <exclude>org/apache/drill/shaded/guava/com/google/common/graph/**</exclude>
                <exclude>org/apache/drill/shaded/guava/com/google/common/collect/Tree*</exclude>
                <exclude>org/apache/drill/shaded/guava/com/google/common/collect/Standard*</exclude>
                <exclude>org/apache/drill/shaded/guava/com/google/common/io/BaseEncoding*</exclude>
                <exclude>org/apache/drill/shaded/guava/com/google/common/graph/**</exclude>
                <exclude>com/google/common/math</exclude>
                <exclude>com/google/common/net</exclude>
                <exclude>com/google/common/primitives</exclude>
                <exclude>com/google/common/reflect</exclude>
                <exclude>com/google/common/util</exclude>
                <exclude>com/google/common/cache</exclude>
                <exclude>com/google/common/collect/Tree*</exclude>
                <exclude>com/google/common/collect/Standard*</exclude>
                <exclude>org/apache/drill/exec/expr/annotations/**</exclude>
                <exclude>org/apache/drill/exec/expr/fn/**</exclude>
                <exclude>org/apache/drill/exec/proto/beans/**</exclude>
                <exclude>org/apache/drill/exec/compile/**</exclude>
                <exclude>org/apache/drill/exec/planner/**</exclude>
                <exclude>org/apache/drill/exec/physical/**</exclude>
                <exclude>org/apache/drill/exec/store/**</exclude>
                <exclude>org/apache/drill/exec/server/rest/**</exclude>
                <exclude>org/apache/drill/exec/rpc/data/**</exclude>
                <exclude>org/apache/drill/exec/rpc/control/**</exclude>
                <exclude>org/apache/drill/exec/work/**</exclude>
                <exclude>org/apache/hadoop/crypto/**</exclude>
                <exclude>org/apache/hadoop/ha/**</exclude>
                <exclude>org/apache/hadoop/http/**</exclude>
                <exclude>org/apache/hadoop/ipc/**</exclude>
                <exclude>org/apache/hadoop/jmx/**</exclude>
                <exclude>org/apache/hadoop/log/**</exclude>
                <exclude>org/apache/hadoop/metrics/**</exclude>
                <exclude>org/apache/hadoop/net/**</exclude>
                <exclude>org/apache/hadoop/record/**</exclude>
                <exclude>org/apache/hadoop/service/**</exclude>
                <exclude>org/apache/hadoop/tracing/**</exclude>
                <exclude>org/apache/hadoop/tools/**</exclude>
                <exclude>org/apache/hadoop/yarn/**</exclude>
                <exclude>org/apache/commons/pool2/**</exclude>
                <exclude>org/apache/http/**</exclude>
                <exclude>org/apache/directory/**</exclude>
                <exclude>org/apache/drill/metastore/**</exclude>
                <exclude>com/jcraft/**</exclude>
                <exclude>**/mapr/**</exclude>
                <exclude>org/yaml/**</exclude>
                <exclude>hello/**</exclude>
                <exclude>webapps/**</exclude>
              </excludes>
            </filter>
            <!-- This file is used to automatically load given jdbc driver without calling Class.forName().
                 Excluding the Avatica service file which is conflicting with the Drill one. -->
            <filter>
              <artifact>org.apache.calcite.avatica:*</artifact>
              <excludes>
                <exclude>META-INF/services/java.sql.Driver</exclude>
                <!-- Excludes shaded slf4j to avoid conflicts when they are put into the fat jar -->
                <exclude>org/slf4j/**</exclude>
              </excludes>
            </filter>
          </filters>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-jdbc-jar-compactness</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>verify</phase>
            <configuration>
              <rules>
                <requireFilesSize>
                  <message>

                    The file drill-jdbc-all-${project.version}.jar is outside the expected size range.

                    This is likely due to you adding new dependencies to a java-exec and not updating the excludes in this module. This is important as it minimizes the size of the
                    dependency of Drill application users.

                  </message>
                  <maxsize>${jdbc-all-jar.maxsize}</maxsize>
                  <minsize>15000000</minsize>
                  <files>
                    <file>${project.build.directory}/drill-jdbc-all-${project.version}.jar</file>
                  </files>
                </requireFilesSize>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <profiles>
    <profile>
      <id>mapr</id>
      <properties>
        <package.namespace.prefix/>
      </properties>

      <build>
        <plugins>
          <plugin>
            <artifactId>maven-shade-plugin</artifactId>
            <configuration>
              <shadedArtifactAttached>false</shadedArtifactAttached>
              <createDependencyReducedPom>true</createDependencyReducedPom>
              <!-- TODO DRILL-4336: try to move the dependencyReducedPom out of the default location (the module root).
                   Putting it here caused the target directory to be run as a submodule (oddly
                   only when trying to run the maven release goal) -->
              <!--dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation-->
              <!-- TODO DRILL-4336: an attempt to fix the issue by moving the file elsewhere, had issues executing
                   but may be able to be modified to to fix the issue-->
              <!--dependencyReducedPomLocation>${project.build.directory}/generated/shade/dependency-reduced-pom.xml</dependencyReducedPomLocation-->
              <minimizeJar>false</minimizeJar>

              <!-- Exclude dependencies at artifact level. Format is "groupId:artifactId[[:type]:classifier]" -->
              <artifactSet>
                <includes>
                  <include>*:*</include>
                </includes>
                <excludes>
                  <exclude>org.slf4j:jcl-over-slf4j</exclude>
                  <exclude>io.protostuff:*</exclude>
                  <exclude>${calcite.groupId}:calcite-core</exclude>
                  <exclude>${calcite.groupId}:calcite-linq4j</exclude>
                  <exclude>org.pentaho:*</exclude>
                  <exclude>org.msgpack:*</exclude>
                  <exclude>xerces:*</exclude>
                  <exclude>xalan:*</exclude>
                  <exclude>org.apache.avro:*</exclude>
                  <exclude>org.mongodb:*</exclude>
                  <exclude>com.googlecode.json-simple:*</exclude>
                  <exclude>dom4j:*</exclude>
                  <exclude>org.hibernate:*</exclude>
                  <exclude>antlr:*</exclude>
                  <exclude>org.ow2.asm:*</exclude>
                  <exclude>com.univocity:*</exclude>
                  <exclude>net.sf.jpam:*</exclude>
                  <exclude>com.twitter:*</exclude>
                  <exclude>org.apache.parquet:*</exclude>
                  <exclude>javax.inject:*</exclude>
                  <exclude>com.beust:*</exclude>
                  <exclude>jline:*</exclude>
                  <exclude>org.xerial.snappy:*</exclude>
                  <exclude>org.apache.avro:*</exclude>
                  <exclude>org.tukaani:*</exclude>
                  <exclude>org.apache.velocity:*</exclude>
                  <exclude>net.hydromatic:linq4j</exclude>
                  <exclude>org.codehaus.janino:*</exclude>
                  <exclude>org.mortbay.jetty:*</exclude>
                  <exclude>org.slf4j:jul-to-slf4j</exclude>
                  <exclude>org.slf4j:log4j-over-slf4j</exclude>
                  <exclude>org.hamcrest:hamcrest-core</exclude>
                  <exclude>org.mockito:mockito-core</exclude>
                  <exclude>org.objenesis:objenesis</exclude>
                  <exclude>org.eclipse.jetty:*</exclude>
                  <exclude>org.apache.hadoop:*</exclude>
                  <exclude>org.jboss.netty:netty</exclude>
                  <exclude>javax.xml.bind:jaxb-api</exclude>
                  <exclude>javax.xml.stream:stax-api</exclude>
                  <exclude>javax.activation:activation</exclude>
                  <exclude>commons-cli:commons-cli</exclude>
                  <exclude>org.apache.commons:commons-collections4</exclude>
                  <exclude>commons-io:commons-io</exclude>
                  <exclude>commons-beanutils:commons-beanutils-core:jar:*</exclude>
                  <exclude>commons-beanutils:commons-beanutils:jar:*</exclude>
                  <exclude>com.google.code.findbugs:jsr305:*</exclude>
                  <exclude>com.esri.geometry:esri-geometry-api:*</exclude>
                  <exclude>dnsjava:dnsjava:jar:*</exclude>
                  <exclude>io.netty:netty-tcnative:jar:*</exclude>
                  <exclude>io.netty:netty-tcnative-classes:jar:*</exclude>
                  <exclude>com.bettercloud:vault-java-driver:jar:*</exclude>
                  <exclude>com.tdunning:t-digest:jar:*</exclude>
                  <exclude>io.airlift:aircompressor:jar:*</exclude>
                  <exclude>com.rdblue:brotli-codec:jar:*</exclude>
                </excludes>
              </artifactSet>
              <relocations>
                <!-- Relocate Drill classes to minimize classloader hell. -->
                <relocation>
                  <pattern>org.apache.drill.exec.</pattern>
                  <shadedPattern>oadd.org.apache.drill.exec.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.drill.common.</pattern>
                  <shadedPattern>oadd.org.apache.drill.common.</shadedPattern>
                </relocation>

                <!-- Move dependencies out of path -->
                <relocation>
                  <pattern>antlr.</pattern>
                  <shadedPattern>oadd.antlr.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>antlr.</pattern>
                  <shadedPattern>oadd.antlr.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>io.</pattern>
                  <shadedPattern>oadd.io.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javacc.</pattern>
                  <shadedPattern>oadd.javacc.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>java_cup.</pattern>
                  <shadedPattern>oadd.java_cup.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>javassist.</pattern>
                  <shadedPattern>oadd.javassist.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>jline.</pattern>
                  <shadedPattern>oadd.jline.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>license.</pattern>
                  <shadedPattern>oadd.license.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>net.</pattern>
                  <shadedPattern>oadd.net.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>parquet.</pattern>
                  <shadedPattern>oadd.parquet.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>test.</pattern>
                  <shadedPattern>oadd.test.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>trax.</pattern>
                  <shadedPattern>oadd.trax.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.antlr.</pattern>
                  <shadedPattern>oadd.org.antlr.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.codehaus.</pattern>
                  <shadedPattern>oadd.org.codehaus.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.eigenbase.</pattern>
                  <shadedPattern>oadd.org.eigenbase.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.hamcrest.</pattern>
                  <shadedPattern>oadd.org.hamcrest.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.jboss.</pattern>
                  <shadedPattern>oadd.org.jboss.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.joda.</pattern>
                  <shadedPattern>oadd.org.joda.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.json.</pattern>
                  <shadedPattern>oadd.org.json.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.mockito.</pattern>
                  <shadedPattern>oadd.org.mockito.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.msgpack.</pattern>
                  <shadedPattern>oadd.org.msgpack.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.objectweb.</pattern>
                  <shadedPattern>oadd.org.objectweb.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.objensis.</pattern>
                  <shadedPattern>oadd.org.objensis.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.pentaho.</pattern>
                  <shadedPattern>oadd.org.pentaho.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.reflections.</pattern>
                  <shadedPattern>oadd.org.reflections.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.tukaani.</pattern>
                  <shadedPattern>oadd.org.tukaani.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.xerial.</pattern>
                  <shadedPattern>oadd.org.xerial.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.beust.</pattern>
                  <shadedPattern>oadd.com.beust.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.carrotsearch.</pattern>
                  <shadedPattern>oadd.com.carrotsearch.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.codahale.</pattern>
                  <shadedPattern>oadd.com.codahale.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.dyuproject.</pattern>
                  <shadedPattern>oadd.com.dyuproject.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.fasterxml.</pattern>
                  <shadedPattern>oadd.com.fasterxml.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.google.</pattern>
                  <shadedPattern>oadd.com.google.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.thoughtworks.</pattern>
                  <shadedPattern>oadd.com.thoughtworks.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.typesafe.</pattern>
                  <shadedPattern>oadd.com.typesafe.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.univocity.</pattern>
                  <shadedPattern>oadd.com.univocity.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.avro.</pattern>
                  <shadedPattern>oadd.org.apache.avro.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.bcel.</pattern>
                  <shadedPattern>oadd.org.apache.bcel.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.calcite.</pattern>
                  <shadedPattern>oadd.org.apache.calcite.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.commons.</pattern>
                  <shadedPattern>oadd.org.apache.commons.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.curator.</pattern>
                  <shadedPattern>oadd.org.apache.curator.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.html.</pattern>
                  <shadedPattern>oadd.org.apache.html.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.jute.</pattern>
                  <shadedPattern>oadd.org.apache.jute.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.log4j.</pattern>
                  <shadedPattern>oadd.org.apache.log4j.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.regexp.</pattern>
                  <shadedPattern>oadd.org.apache.regexp.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.velocity.</pattern>
                  <shadedPattern>oadd.org.apache.velocity.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.wml.</pattern>
                  <shadedPattern>oadd.org.apache.wml.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.xalan.</pattern>
                  <shadedPattern>oadd.org.apache.xalan.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.xerces.</pattern>
                  <shadedPattern>oadd.org.apache.xerces.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.xml.</pattern>
                  <shadedPattern>oadd.org.apache.xml.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.xmlcommons.</pattern>
                  <shadedPattern>oadd.org.apache.xmlcommons.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.xpath.</pattern>
                  <shadedPattern>oadd.org.apache.xpath.</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.zookeeper.</pattern>
                  <shadedPattern>oadd.org.apache.zookeeper.</shadedPattern>
                </relocation>
              </relocations>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                  <resource>drill-module.conf</resource>
                </transformer>
              </transformers>

              <!-- Remove the particular directory or class level dependency from final jar -->
              <filters>
                <filter>
                  <artifact>*:*</artifact>
                  <excludes>
                    <exclude>**/logback.xml</exclude>
                    <exclude>**/LICENSE.txt</exclude>
                    <exclude>**/*.java</exclude>
                    <exclude>META-INF/ASL2.0</exclude>
                    <exclude>META-INF/NOTICE.txt</exclude>
                    <exclude>META-INF/drill-module-scan/**</exclude>
                    <exclude>META-INF/jboss-beans.xml</exclude>
                    <exclude>META-INF/license/**</exclude>
                    <exclude>META-INF/maven/**</exclude>
                    <exclude>META-INF/native/**</exclude>
                    <exclude>META-INF/services/com.fasterxml.*</exclude>
                    <exclude>META-INF/services/javax.ws.*</exclude>
                    <exclude>META-INF/**/*.properties</exclude>
                    <exclude>**/org.codehaus.commons.compiler.properties</exclude>
                    <exclude>module-info.class</exclude>
                    <exclude>**/*.SF</exclude>
                    <exclude>**/*.RSA</exclude>
                    <exclude>**/*.DSA</exclude>
                    <exclude>javax/*</exclude>
                    <exclude>javax/activation/**</exclude>
                    <exclude>javax/annotation-api/**</exclude>
                    <exclude>javax/inject/**</exclude>
                    <exclude>javax/servlet-api/**</exclude>
                    <exclude>javax/json/**</exclude>
                    <exclude>javax/ws/**</exclude>
                    <exclude>rest/**</exclude>
                    <exclude>*.tokens</exclude>
                    <exclude>codegen/**</exclude>
                    <exclude>bootstrap-storage-plugins.json</exclude>
                    <exclude>org/apache/parquet</exclude>
                    <exclude>org/apache/drill/shaded/guava/com/google/common/escape/**</exclude>
                    <exclude>org/apache/drill/shaded/guava/com/google/common/eventbus/**</exclude>
                    <exclude>org/apache/drill/shaded/guava/com/google/common/html/**</exclude>
                    <exclude>org/apache/drill/shaded/guava/com/google/common/net/**</exclude>
                    <exclude>org/apache/drill/shaded/guava/com/google/common/xml/**</exclude>
                    <exclude>org/apache/drill/shaded/guava/com/google/common/graph/**</exclude>
                    <exclude>org/apache/drill/shaded/guava/com/google/common/collect/Tree*</exclude>
                    <exclude>org/apache/drill/shaded/guava/com/google/common/collect/Standard*</exclude>
                    <exclude>org/apache/drill/shaded/guava/com/google/common/graph/**</exclude>
                    <exclude>com/google/common/math</exclude>
                    <exclude>com/google/common/net</exclude>
                    <exclude>com/google/common/primitives</exclude>
                    <exclude>com/google/common/reflect</exclude>
                    <exclude>com/google/common/util</exclude>
                    <exclude>com/google/common/cache</exclude>
                    <exclude>com/google/common/collect/Tree*</exclude>
                    <exclude>com/google/common/collect/Standard*</exclude>
                    <exclude>org/apache/drill/exec/expr/annotations/**</exclude>
                    <exclude>org/apache/drill/exec/expr/fn/**</exclude>
                    <exclude>org/apache/drill/exec/proto/beans/**</exclude>
                    <exclude>org/apache/drill/exec/compile/**</exclude>
                    <exclude>org/apache/drill/exec/planner/**</exclude>
                    <exclude>org/apache/drill/exec/physical/**</exclude>
                    <exclude>org/apache/drill/exec/store/**</exclude>
                    <exclude>org/apache/drill/exec/server/rest/**</exclude>
                    <exclude>org/apache/drill/exec/rpc/data/**</exclude>
                    <exclude>org/apache/drill/exec/rpc/control/**</exclude>
                    <exclude>org/apache/drill/exec/work/**</exclude>
                    <exclude>org/apache/drill/metastore/**</exclude>
                    <exclude>org/apache/hadoop/**</exclude>
                    <exclude>org/apache/commons/pool2/**</exclude>
                    <exclude>org/apache/http/**</exclude>
                    <exclude>org/apache/directory/**</exclude>
                    <exclude>com/jcraft/**</exclude>
                    <exclude>**/mapr/**</exclude>
                    <exclude>org/yaml/**</exclude>
                    <exclude>hello/**</exclude>
                    <exclude>webapps/**</exclude>
                  </excludes>
                </filter>
                <!-- This file is used to automatically load given jdbc driver without calling Class.forName().
                     Excluding the Avatica service file which is conflicting with the Drill one. -->
                <filter>
                  <artifact>org.apache.calcite.avatica:*</artifact>
                  <excludes>
                    <exclude>META-INF/services/java.sql.Driver</exclude>
                    <!-- Excludes shaded slf4j to avoid conflicts when they are put into the fat jar -->
                    <exclude>org/slf4j/**</exclude>
                  </excludes>
                </filter>
              </filters>
            </configuration>
          </plugin>
        </plugins>

      </build>
    </profile>
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>aggregate-jar</goal>
                </goals>
                <inherited>false</inherited>
                <configuration>
                  <includeDependencySources>true</includeDependencySources>
                  <dependencySourceIncludes>
                    <dependencySourceInclude>org.apache.drill.exec:drill-jdbc</dependencySourceInclude>
                  </dependencySourceIncludes>
                  <!-- Include only the published interface in the Javadoc-
                       generated documentation.  Unfortunately, the plugin does
                       not support inclusion patterns and hence we have to rely
                       on an exclusion pattern. -->
                  <excludePackageNames>org.apache.drill.jdbc.impl</excludePackageNames>

                  <!-- windowtitle: common part of window titles (goes in
                       parentheses at end of window title, after in-page title
                       (e.g., package name)) -->
                  <windowtitle>
                    Apache Drill JDBC Driver v. ${project.version}
                  </windowtitle>

                  <!-- header, footer:  small text at right edge of
                       top, bottom Overview/Package/etc. menu bars -->
                  <header>Apache Drill JDBC Driver v. ${project.version}</header>
                  <footer>Apache Drill JDBC Driver v. ${project.version}</footer>

                  <!-- doctitle:  in-page title for overview page  -->
                  <doctitle>
                    Apache Drill JDBC Driver version ${project.version}
                  </doctitle>
                  <groups>
                    <group>
                      <title>Drill JDBC Driver</title>
                      <packages>org.apache.drill.jdbc</packages>
                    </group>
                    <group>
                      <title>Tracing Proxy JDBC Driver</title>
                      <packages>org.apache.drill.jdbc.proxy</packages>
                    </group>
                  </groups>

                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>hadoop-2</id>
      <properties>
        <jdbc-all-jar.maxsize>50000000</jdbc-all-jar.maxsize>
      </properties>
    </profile>
  </profiles>

</project>
