[ 
https://issues.apache.org/jira/browse/DRILL-3589?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14700279#comment-14700279
 ] 

ASF GitHub Bot commented on DRILL-3589:
---------------------------------------

Github user dsbos commented on the pull request:

    https://github.com/apache/drill/pull/116#issuecomment-131970908
  
    It seems that you have shaded references to every Java package other than 
org.apache.drill.** (not just for every package from every depended-on 
artifact, but for _every_ package--including JDK packages).
    
    Note how the following command says it can't find "oadd/java/sql/Driver":
    
    $ java -cp ./exec/jdbc-all/target/drill-jdbc-all-1.2.0-SNAPSHOT.jar 
org.apache.drill.jdbc.Driver
    Exception in thread "main" java.lang.NoClassDefFoundError: 
oadd/java/sql/Driver
    ...
    
    It seems that in trying to load org.apache.drill.jdbc.Driver it tried to 
load its base class, normally java.sql.Driver from the JDK, but the reference 
to that base class was shaded to oadd.org.java.sql.Driver, so of course it 
couldn't be found.
    
    (The expected behavior of that command is an error that 
org.apache.drill.jdbc.Driver doesn't have a main method.)
    
    
    What setup did you use to test the shading?



> JDBC driver maven artifact includes a lot of unnecessary dependencies
> ---------------------------------------------------------------------
>
>                 Key: DRILL-3589
>                 URL: https://issues.apache.org/jira/browse/DRILL-3589
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Client - JDBC
>            Reporter: Joseph Barefoot
>            Assignee: Daniel Barclay (Drill)
>             Fix For: 1.2.0
>
>
> The Drill JDBC POM file pulls in so many unused transitive dependencies that 
> it takes quite a while to exclude all the unnecessary ones when using it from 
> within a Java project.  This is similar to DRILL-3581 in that you can work 
> around it via exclusions of transitive dependencies, but since it makes 
> interoperability with other open-source projects problematic, this will keep 
> coming up for anyone using the JDBC driver from within any serious java app.
> Considering the pom:
> http://repo1.maven.org/maven2/org/apache/drill/exec/drill-jdbc/1.1.0/drill-jdbc-1.1.0.pom
> ...it seems that most of the unused dependencies are transitive from 
> drill-common and perhaps also drill-java-exec.  Here's an example of some 
> dependencies that the JDBC driver shouldn't need (and we excluded in our 
> project):
> parquet-*
> jetty-server
> javassist
> commons-daemon
> hibernate-validator
> xalan
> xercesImpl
> For the record we are now able to use the JDBC driver fine from within our 
> project, but it did take some dependency tree analysis (and a little 
> trial-and-error) to figure out what to exclude.  We would like to save future 
> developers that time.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to