<?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-SNAPSHOT</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.fasterxml.woodstox:woodstox-core: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.fasterxml.woodstox.</pattern><shadedPattern>oadd.com.fasterxml.woodstox.</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>
           </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>
                  </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>
                  </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>
