[Created] (MSHADE-267) Transitive dependencies of test dependencies included in shaded jar

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[Created] (MSHADE-267) Transitive dependencies of test dependencies included in shaded jar

JIRA jira@apache.org
Jens Bannmann created MSHADE-267:
------------------------------------

             Summary: Transitive dependencies of test dependencies included in shaded jar
                 Key: MSHADE-267
                 URL: https://issues.apache.org/jira/browse/MSHADE-267
             Project: Maven Shade Plugin
          Issue Type: Bug
    Affects Versions: 3.1.0, 2.1
            Reporter: Jens Bannmann


My project includes a {{test}} dependency to {{org.testng:testng}}, which has a bunch of {{compile}} and {{test}} dependencies:

{code}
com.github.elgashu:elgashu:jar:0.2-SNAPSHOT
+- org.testng:testng:jar:6.8:test
   +- junit:junit:jar:4.10:compile
   |  \- org.hamcrest:hamcrest-core:jar:1.1:compile
   +- org.beanshell:bsh:jar:2.0b4:test
   +- com.beust:jcommander:jar:1.27:test
   \- org.yaml:snakeyaml:jar:1.6:test
{code}

I use the Shade plugin to create a fat jar of my production code; I want neither my test code nor its dependencies to end up in that fat jar.

However, while the Shade plugin correctly excludes {{org.testng:testng}} itself (due to the {{test}} scope), its {{compile}} dependencies ({{junit:junit:jar}} and {{org.hamcrest:hamcrest-core}}) also end up in the shaded jar. This contradicts [Maven's rules for transitive dependency scoping|https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope] which say that {{compile}} dependencies of {{test}} dependencies turn into {{test}} as well.

The workaround would be to explicitly exclude each of those transitive dependencies (and their transitive dependencies), but that effectively means manually tracking the dependency trees of all upstream dependencies, which IMO is not feasible.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)