drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-3589) JDBC driver maven artifact includes a lot of unnecessary dependencies
Date Mon, 17 Aug 2015 21:43:45 GMT

    [ 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)

Mime
View raw message