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

  <artifactId>drill-jdbc-all</artifactId>
  <name>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>
          <artifactId>metadata-extractor</artifactId>
          <groupId>com.drewnoakes</groupId>
        </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>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>fr.bmartel:pcapngdecoder:*</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>**/*.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>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>43000000</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>37500000</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>
                    <exclude>fr.bmartel:pcapngdecoder:*</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>**/*.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>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>travis</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
    </profile>
  </profiles>

</project>
