blob: 909954a4d21c1d6a366b16642626a99bcbad79a4 [file] [log] [blame]
<?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.22.0-SNAPSHOT</version>
</parent>
<artifactId>drill-jdbc-all</artifactId>
<name>Drill : Exec : JDBC JAR with all dependencies</name>
<!-- Since we are packaging hadoop dependencies under the namespace with "oadd." prefix by default,
"package.namespace.prefix" equals to "oadd.". It can be overridden if necessary within any profile -->
<properties>
<package.namespace.prefix>oadd.</package.namespace.prefix>
<jdbc-all-jar.maxsize>54000000</jdbc-all-jar.maxsize>
</properties>
<dependencies>
<!--
Notes for excluding unwanted code from the JDBC driver to keep its
size down.
First use conventional Maven exclusions, most commonly required under
drill-java-exec, to try to exclude the dependency. If you cannot see
the code you want exclude in this module's mvn:dependency-tree under
a dependency where you could add an exclusion then you will need to
use exclusion rules in the maven-shade-plugin instead.
Once you've excluded something that was previously present in the JDBC
driver you need to test it. Note that neither the JDBC unit tests nor
drill-embedded exercise the JDBC driver JAR produced by *this module*,
even though they both connect to Drill using JDBC. So to test you need
to launch a JDBC client like DBeaver or a short Java CLI program that
loads the driver JAR created by this module.
-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.drill</groupId>
<artifactId>drill-common</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-servlets</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.drill.exec</groupId>
<artifactId>drill-java-exec</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
</exclusion>
<exclusion>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
</exclusion>
<exclusion>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
</exclusion>
<exclusion>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
</exclusion>
<exclusion>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jetty-servlet</artifactId>
</exclusion>
<exclusion>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
</exclusion>
<exclusion>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-mvc-freemarker</artifactId>
</exclusion>
<exclusion>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</exclusion>
<exclusion>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
</exclusion>
<exclusion>
<artifactId>*</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>parquet-hadoop</artifactId>
<groupId>org.apache.parquet</groupId>
</exclusion>
<exclusion>
<artifactId>parquet-column</artifactId>
<groupId>org.apache.parquet</groupId>
</exclusion>
<exclusion>
<artifactId>parquet-common</artifactId>
<groupId>org.apache.parquet</groupId>
</exclusion>
<exclusion>
<artifactId>infinispan-core</artifactId>
<groupId>org.infinispan</groupId>
</exclusion>
<exclusion>
<artifactId>asm-util</artifactId>
<groupId>org.ow2.asm</groupId>
</exclusion>
<exclusion>
<artifactId>codemodel</artifactId>
<groupId>com.sun.codemodel</groupId>
</exclusion>
<exclusion>
<artifactId>asm-commons</artifactId>
<groupId>org.ow2.asm</groupId>
</exclusion>
<exclusion>
<artifactId>infinispan-tree</artifactId>
<groupId>org.infinispan</groupId>
</exclusion>
<exclusion>
<artifactId>jetty-util</artifactId>
<groupId>org.eclipse.jetty</groupId>
</exclusion>
<exclusion>
<artifactId>freemarker</artifactId>
<groupId>org.freemarker</groupId>
</exclusion>
<exclusion>
<artifactId>hazelcast</artifactId>
<groupId>com.hazelcast</groupId>
</exclusion>
<exclusion>
<groupId>nl.basjes.parse.httpdlog</groupId>
<artifactId>httpdlog-parser</artifactId>
</exclusion>
<exclusion>
<groupId>org.kohsuke</groupId>
<artifactId>libpam4j</artifactId>
</exclusion>
<exclusion>
<groupId>sqlline</groupId>
<artifactId>sqlline</artifactId>
</exclusion>
<exclusion>
<artifactId>stream</artifactId>
<groupId>com.clearspring.analytics</groupId>
</exclusion>
<exclusion>
<groupId>org.honton.chas.hocon</groupId>
<artifactId>jackson-dataformat-hocon</artifactId>
</exclusion>
<exclusion>
<groupId>org.owasp.encoder</groupId>
<artifactId>encoder</artifactId>
</exclusion>
<exclusion>
<groupId>com.dropbox.core</groupId>
<artifactId>dropbox-core-sdk</artifactId>
</exclusion>
<exclusion>
<groupId>com.box</groupId>
<artifactId>box-java-sdk</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.ws.xmlschema</groupId>
<artifactId>xmlschema-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.ws.xmlschema</groupId>
<artifactId>xmlschema-walker</artifactId>
</exclusion>
<exclusion>
<groupId>io.airlift</groupId>
<artifactId>aircompressor</artifactId>
</exclusion>
<exclusion>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2</artifactId>
</exclusion>
<exclusion>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2-servlet-initializer-v2</artifactId>
</exclusion>
<exclusion>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</exclusion>
<exclusion>
<groupId>com.tdunning</groupId>
<artifactId>t-digest</artifactId>
</exclusion>
<exclusion>
<groupId>com.bettercloud</groupId>
<artifactId>vault-java-driver</artifactId>
</exclusion>
<exclusion>
<groupId>com.esri.geometry</groupId>
<artifactId>esri-geometry-api</artifactId>
</exclusion>
<exclusion>
<groupId>com.yahoo.datasketches</groupId>
<artifactId>sketches-core</artifactId>
</exclusion>
<exclusion>
<groupId>${calcite.groupId}</groupId>
<artifactId>calcite-core</artifactId>
</exclusion>
<exclusion>
<groupId>${calcite.groupId}</groupId>
<artifactId>calcite-linq4j</artifactId>
</exclusion>
<exclusion>
<groupId>net.sf.jpam</groupId>
<artifactId>jpam</artifactId>
</exclusion>
<exclusion>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.janino</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.thoughtworks.paranamer</groupId>
<artifactId>paranamer</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.kerby</groupId>
<artifactId>*</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.1.2</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<argLine>-Xms512m -Xmx3g -Ddrill.exec.http.enabled=false -Djava.net.preferIPv4Stack=true
-Ddrill.exec.sys.store.provider.local.write=false
-Dorg.apache.drill.exec.server.Drillbit.system_options="org.apache.drill.exec.compile.ClassTransformer.scalar_replacement=on"
-XX:MaxDirectMemorySize=3072M
${junit.args} -ea
</argLine>
<additionalClasspathElements>
<additionalClasspathElements>${settings.localRepository}/org/junit/vintage/junit-vintage-engine/${junit.version}/junit-vintage-engine-${junit.version}.jar
</additionalClasspathElements>
<additionalClasspathElements>${settings.localRepository}/org/hamcrest/hamcrest/${hamcrest.version}/hamcrest-${hamcrest.version}.jar</additionalClasspathElements>
<additionalClasspathElements>${project.build.directory}/test-classes/</additionalClasspathElements>
</additionalClasspathElements>
<systemPropertyVariables>
<java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
<app.class.path>${app.class.path}</app.class.path>
<project.version>${project.version}</project.version>
</systemPropertyVariables>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<shadedArtifactAttached>false</shadedArtifactAttached>
<createDependencyReducedPom>true</createDependencyReducedPom>
<!-- TODO DRILL-4336: try to move the dependencyReducedPom out of the default location (the module root).
Putting it here caused the target directory to be run as a submodule (oddly
only when trying to run the maven release goal) -->
<!--dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation-->
<!-- TODO DRILL-4336: an attempt to fix the issue by moving the file elsewhere, had issues executing
but may be able to be modified to to fix the issue-->
<!--dependencyReducedPomLocation>${project.build.directory}/generated/shade/dependency-reduced-pom.xml</dependencyReducedPomLocation-->
<minimizeJar>false</minimizeJar>
<!-- Exclude dependencies at artifact level. Format is "groupId:artifactId[[:type]:classifier]" -->
<artifactSet>
<includes>
<include>*:*</include>
</includes>
<excludes>
<!-- Please keep this list sorted. -->
<exclude>antlr:*</exclude>
<exclude>com.beust:*</exclude>
<exclude>com.dropbox.*</exclude>
<exclude>com.github.stefanbirkner</exclude>
<exclude>com.google.code.findbugs:jsr305:*</exclude>
<exclude>com.googlecode.json-simple:*</exclude>
<exclude>commons-beanutils:commons-beanutils-core:jar:*</exclude>
<exclude>commons-beanutils:commons-beanutils:jar:*</exclude>
<exclude>commons-cli:commons-cli</exclude>
<exclude>commons-io:commons-io</exclude>
<exclude>com.nimbusds:*</exclude>
<exclude>com.twitter:*</exclude>
<exclude>com.univocity:*</exclude>
<exclude>dnsjava:dnsjava:jar:*</exclude>
<exclude>dom4j:*</exclude>
<exclude>io.netty:netty-tcnative-classes:jar:*</exclude>
<exclude>io.netty:netty-tcnative:jar:*</exclude>
<exclude>io.protostuff:*</exclude>
<exclude>javax.activation:activation</exclude>
<exclude>javax.inject:*</exclude>
<exclude>javax.xml.bind:jaxb-api</exclude>
<exclude>javax.xml.stream:stax-api</exclude>
<exclude>jline:*</exclude>
<exclude>net.hydromatic:linq4j</exclude>
<exclude>org.apache.avro:*</exclude>
<exclude>org.apache.commons:commons-collections4</exclude>
<exclude>org.apache.hadoop:hadoop-yarn-client</exclude>
<exclude>org.apache.parquet:*</exclude>
<exclude>org.apache.velocity:*</exclude>
<exclude>org.apache.yetus:*</exclude>
<exclude>org.eclipse.jetty:*</exclude>
<exclude>org.eclipse.jetty.websocket:*</exclude>
<exclude>org.hamcrest:hamcrest-core</exclude>
<exclude>org.hibernate:*</exclude>
<exclude>org.mockito:mockito-core</exclude>
<exclude>org.mongodb:*</exclude>
<exclude>org.msgpack:*</exclude>
<exclude>org.objenesis:objenesis</exclude>
<exclude>org.ow2.asm:*</exclude>
<exclude>org.pentaho:*</exclude>
<exclude>org.slf4j:jul-to-slf4j</exclude>
<exclude>org.tukaani:*</exclude>
<exclude>org.xerial.snappy:*</exclude>
<exclude>xalan:*</exclude>
<exclude>xerces:*</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>bootstrap-storage-plugins.json</exclude>
<exclude>codegen/**</exclude>
<exclude>com/google/common/cache</exclude>
<exclude>com/google/common/collect/Standard*</exclude>
<exclude>com/google/common/collect/Tree*</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/jcraft/**</exclude>
<exclude>**/*.DSA</exclude>
<exclude>hello/**</exclude>
<exclude>**/*.java</exclude>
<exclude>javax/activation/**</exclude>
<exclude>javax/annotation-api/**</exclude>
<exclude>javax/*</exclude>
<exclude>javax/inject/**</exclude>
<exclude>javax/json/**</exclude>
<exclude>javax/servlet/**</exclude>
<exclude>javax/ws/**</exclude>
<exclude>**/LICENSE.txt</exclude>
<exclude>**/logback.xml</exclude>
<exclude>**/mapr/**</exclude>
<exclude>META-INF/ASL2.0</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/NOTICE.txt</exclude>
<exclude>META-INF/**/*.properties</exclude>
<exclude>META-INF/services/com.fasterxml.*</exclude>
<exclude>META-INF/services/javax.ws.*</exclude>
<exclude>module-info.class</exclude>
<exclude>org/apache/commons/pool2/**</exclude>
<exclude>org/apache/directory/**</exclude>
<exclude>org/apache/drill/exec/compile/**</exclude>
<exclude>org/apache/drill/exec/expr/annotations/**</exclude>
<exclude>org/apache/drill/exec/expr/fn/**</exclude>
<exclude>org/apache/drill/exec/physical/**</exclude>
<exclude>org/apache/drill/exec/planner/**</exclude>
<exclude>org/apache/drill/exec/proto/beans/**</exclude>
<exclude>org/apache/drill/exec/rpc/control/**</exclude>
<exclude>org/apache/drill/exec/rpc/data/**</exclude>
<exclude>org/apache/drill/exec/server/rest/**</exclude>
<exclude>org/apache/drill/exec/store/**</exclude>
<exclude>org/apache/drill/exec/work/**</exclude>
<exclude>org/apache/drill/metastore/**</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/record/**</exclude>
<exclude>org/apache/hadoop/service/**</exclude>
<exclude>org/apache/hadoop/tools/**</exclude>
<exclude>org/apache/hadoop/tracing/**</exclude>
<exclude>org/apache/hadoop/yarn/**</exclude>
<exclude>org/apache/http/**</exclude>
<exclude>org/apache/parquet</exclude>
<exclude>**/org.codehaus.commons.compiler.properties</exclude>
<exclude>org/yaml/**</exclude>
<exclude>rest/**</exclude>
<exclude>**/*.RSA</exclude>
<exclude>**/*.SF</exclude>
<exclude>*.tokens</exclude>
<exclude>webapps/**</exclude>
</excludes>
</filter>
<!-- This file is used to automatically load given jdbc driver without calling Class.forName().
Excluding the Avatica service file which is conflicting with the Drill one. -->
<filter>
<artifact>org.apache.calcite.avatica:*</artifact>
<excludes>
<exclude>META-INF/services/java.sql.Driver</exclude>
<!-- Excludes shaded slf4j to avoid conflicts when they are put into the fat jar -->
<exclude>org/slf4j/**</exclude>
</excludes>
</filter>
</filters>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-jdbc-jar-compactness</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>verify</phase>
<configuration>
<rules>
<requireFilesSize>
<message>
The file drill-jdbc-all-${project.version}.jar is outside the expected size range.
This is likely due to you adding new dependencies to a java-exec and not updating the excludes in this module. This is important as it minimizes the size of the
dependency of Drill application users.
</message>
<maxsize>${jdbc-all-jar.maxsize}</maxsize>
<minsize>15000000</minsize>
<files>
<file>${project.build.directory}/drill-jdbc-all-${project.version}.jar</file>
</files>
</requireFilesSize>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>apache-release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>aggregate-jar</goal>
</goals>
<inherited>false</inherited>
<configuration>
<includeDependencySources>true</includeDependencySources>
<dependencySourceIncludes>
<dependencySourceInclude>org.apache.drill.exec:drill-jdbc</dependencySourceInclude>
</dependencySourceIncludes>
<!-- Include only the published interface in the Javadoc-
generated documentation. Unfortunately, the plugin does
not support inclusion patterns and hence we have to rely
on an exclusion pattern. -->
<excludePackageNames>org.apache.drill.jdbc.impl</excludePackageNames>
<!-- windowtitle: common part of window titles (goes in
parentheses at end of window title, after in-page title
(e.g., package name)) -->
<windowtitle>
Apache Drill JDBC Driver v. ${project.version}
</windowtitle>
<!-- header, footer: small text at right edge of
top, bottom Overview/Package/etc. menu bars -->
<header>Apache Drill JDBC Driver v. ${project.version}</header>
<footer>Apache Drill JDBC Driver v. ${project.version}</footer>
<!-- doctitle: in-page title for overview page -->
<doctitle>
Apache Drill JDBC Driver version ${project.version}
</doctitle>
<groups>
<group>
<title>Drill JDBC Driver</title>
<packages>org.apache.drill.jdbc</packages>
</group>
<group>
<title>Tracing Proxy JDBC Driver</title>
<packages>org.apache.drill.jdbc.proxy</packages>
</group>
</groups>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>hadoop-2</id>
<properties>
<jdbc-all-jar.maxsize>54500000</jdbc-all-jar.maxsize>
</properties>
</profile>
</profiles>
</project>