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

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

  <dependencies>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${dep.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>org.bouncycastle</groupId>
          <artifactId>bcpkix-jdk15on</artifactId>
        </exclusion>
        <exclusion>
          <artifactId>jersey-container-jetty-servlet</artifactId>
          <groupId>org.glassfish.jersey.containers</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jetty-server</artifactId>
          <groupId>org.eclipse.jetty</groupId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-common</artifactId>
        </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>jersey-media-multipart</artifactId>
          <groupId>org.glassfish.jersey.media</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jersey-mvc-freemarker</artifactId>
          <groupId>org.glassfish.jersey.ext</groupId>
        </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>
          <artifactId>commons-compiler-jdk</artifactId>
          <groupId>org.codehaus.janino</groupId>
        </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>

    <dependency>
      <groupId>org.codehaus.janino</groupId>
      <artifactId>janino</artifactId>
      <version>2.6.1</version>
      <scope>test</scope>
    </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>
    <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>2.18.1</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:MaxPermSize=256M -XX:MaxDirectMemorySize=3072M
            -XX:+CMSClassUnloadingEnabled -ea</argLine>
          <additionalClasspathElements>
            <additionalClasspathElements>${settings.localRepository}/junit/junit/4.11/junit-4.11.jar</additionalClasspathElements>
            <additionalClasspathElements>${settings.localRepository}/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar</additionalClasspathElements>
            <additionalClasspathElements>${project.build.directory}/test-classes/</additionalClasspathElements>
          </additionalClasspathElements>
          <classpathDependencyExcludes>
            <classpathDependencyExcludes>*:*</classpathDependencyExcludes>
          </classpathDependencyExcludes>

          <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>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4.1</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
        <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>

          <artifactSet>
            <includes>
              <include>*:*</include>
            </includes>
            <excludes>
              <exclude>org.slf4j:jcl-over-slf4j</exclude>
              <exclude>com.dyuproject.protostuff:*</exclude>
              <exclude>org.apache.calcite:*</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>javax.validation:*</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>
            </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>
         <filters>
           <filter>
             <artifact>*:*</artifact>
             <excludes>
               <exclude>**/logback.xml</exclude>
               <exclude>**/LICENSE.txt</exclude>
               <exclude>**/*.java</exclude>
               <exclude>**/META-INF/**</exclude>
               <exclude>**/org.codehaus.commons.compiler.properties</exclude>
               <exclude>**/*.SF</exclude>
               <exclude>**/*.RSA</exclude>
               <exclude>**/*.DSA</exclude>
               <exclude>javax/**</exclude>
               <exclude>rest/**</exclude>
               <exclude>*.tokens</exclude>
               <exclude>codegen/**</exclude>
               <exclude>bootstrap-storage-plugins.json</exclude>
               <exclude>org/apache/parquet</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>
             </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>21000000</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>apache-release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>aggregate-jar</goal>
                </goals>
                <inherited>false</inherited>
                <configuration>
                  <includeDependencySources>true</includeDependencySources>
                  <dependencySourceIncludes>
                    <dependencySourceInclude>org.apache.drill.exec:drill-jdbc</dependencySourceInclude>
                  </dependencySourceIncludes>
                  <!-- Include only the published interface in the Javadoc-
                       generated documentation.  Unfortunately, the plugin does
                       not support inclusion patterns and hence we have to rely
                       on an exclusion pattern. -->
                  <excludePackageNames>org.apache.drill.jdbc.impl</excludePackageNames>

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

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

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

                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
