You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Robert Scholte (JIRA)" <ji...@codehaus.org> on 2015/01/21 20:27:18 UTC

[jira] (MNG-5145) Optional compile dependencies being resolved by test dependencies

     [ https://jira.codehaus.org/browse/MNG-5145?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Robert Scholte closed MNG-5145.
-------------------------------

       Resolution: Fixed
    Fix Version/s: 3.1.0
         Assignee: Robert Scholte  (was: Jason van Zyl)

I've tested it with 3.1.0 and newer. Now it is correct. I think this was fixed thanks to MNG-5354.

> Optional compile dependencies being resolved by test dependencies
> -----------------------------------------------------------------
>
>                 Key: MNG-5145
>                 URL: https://jira.codehaus.org/browse/MNG-5145
>             Project: Maven
>          Issue Type: Bug
>          Components: Dependencies
>    Affects Versions: 3.0.3
>            Reporter: Robert Watkins
>            Assignee: Robert Scholte
>            Priority: Critical
>             Fix For: 3.1.0
>
>         Attachments: pom.xml
>
>
> Optional compile-time dependencies are being resolved (in WAR projects, at least) into the packaged artifact.
> There has been a regression since Maven 2.2.1 in regards to resolving optional dependencies.
> In the attached pom (which builds a WAR), there are two dependencies:
> * org.springframework:spring-core:2.5.6 - at compile scope
> * org.dbunit:dbunit:2.3.0 - at test scope.
> The dependency tree looks like this:
> {noformat}
> net.twasink:webapp:war:1.0
> +- org.springframework:spring-core:jar:2.5.6:compile
> |  \- commons-logging:commons-logging:jar:1.1.1:compile
> \- org.dbunit:dbunit:jar:2.3.0:test
>    +- junit:junit:jar:3.8.2:test
>    +- junit-addons:junit-addons:jar:1.4:test
>    |  +- xerces:xercesImpl:jar:2.6.2:test
>    |  \- xerces:xmlParserAPIs:jar:2.6.2:test
>    +- org.apache.poi:poi:jar:3.1-FINAL:test
>    |  \- log4j:log4j:jar:1.2.13:test
>    +- commons-collections:commons-collections:jar:3.1:test
>    +- commons-lang:commons-lang:jar:2.1:test
>    +- org.slf4j:slf4j-api:jar:1.4.3:test
>    \- org.slf4j:slf4j-nop:jar:1.4.3:test
> {noformat}
> Note that {{log4j:log4j:1.2.13}} is a {{test}} dependency. However, when you do {{'mvn package'}}, and inspect the resulting WAR file, it includes {{log4j}}!
> The problem appears to be that {{commons-logging}} (a compile dependency brought in by {{spring-core}}) declares {{log4j}} as an _optional_ {{compile}} dependency. This is clashing with the test dependency brought in transitively by {{dbunit}}.
> To make it worse, this is still brought in if you add an explicit exclusion of {{log4j}} to {{spring-core}}.
> Maven 2.2.1 did not bring in the {{log4j}} JAR - this is a regression under Maven 3.0.3



--
This message was sent by Atlassian JIRA
(v6.1.6#6162)