<?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>1.19.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>
  </properties>

  <dependencies>

    <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>
      </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.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>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>
      </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
            -XX:+CMSClassUnloadingEnabled -ea</argLine>
          <additionalClasspathElements>
            <additionalClasspathElements>${settings.localRepository}/junit/junit/${junit.version}/junit-${junit.version}.jar</additionalClasspathElements>
            <additionalClasspathElements>${settings.localRepository}/org/hamcrest/hamcrest-core/${hamcrest.core.version}/hamcrest-core-${hamcrest.core.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>${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>io.netty:netty:jar:3.7.0.Final</exclude>
              <exclude>io.netty:netty-transport-native-epoll:*</exclude>
              <exclude>io.netty:netty-transport-native-unix-common:*</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.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>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>commons-io:commons-io</exclude>
              <exclude>commons-beanutils:commons-beanutils-core:jar:*</exclude>
              <exclude>commons-beanutils:commons-beanutils:jar:*</exclude>
              <exclude>io.netty:netty-tcnative:jar:*</exclude>
              <exclude>com.google.code.findbugs:jsr305:*</exclude>
              <exclude>com.esri.geometry:esri-geometry-api:*</exclude>
              <exclude>dnsjava:dnsjava: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>
            <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>46000000</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>

  <pluginRepositories>
    <pluginRepository>
      <id>onejar-maven-plugin.googlecode.com</id>
      <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
    </pluginRepository>
    <pluginRepository>
      <id>scala-tools.org</id>
      <name>Scala-tools Maven2 Repository</name>
      <url>http://scala-tools.org/repo-releases</url>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

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

        <build>
          <plugins>
            <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>46000000</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>

            <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>io.netty:netty:jar:3.7.0.Final</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>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>
                  </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>
  </profiles>

</project>
