Return-Path: X-Original-To: apmail-maven-issues-archive@minotaur.apache.org Delivered-To: apmail-maven-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4EF979AB5 for ; Sun, 2 Jun 2013 13:24:28 +0000 (UTC) Received: (qmail 74327 invoked by uid 500); 2 Jun 2013 13:24:27 -0000 Delivered-To: apmail-maven-issues-archive@maven.apache.org Received: (qmail 74279 invoked by uid 500); 2 Jun 2013 13:24:27 -0000 Mailing-List: contact issues-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@maven.apache.org Delivered-To: mailing list issues@maven.apache.org Received: (qmail 74271 invoked by uid 99); 2 Jun 2013 13:24:27 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 02 Jun 2013 13:24:27 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [63.246.24.159] (HELO codehaus01.managed.contegix.com) (63.246.24.159) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 02 Jun 2013 13:24:23 +0000 Received: from codehaus01 (localhost.localdomain [127.0.0.1]) by codehaus01.managed.contegix.com (Postfix) with ESMTP id 52178B0740 for ; Sun, 2 Jun 2013 08:24:03 -0500 (CDT) Date: Sun, 2 Jun 2013 08:24:03 -0500 (CDT) From: "Robert Scholte (JIRA)" To: issues@maven.apache.org Message-ID: In-Reply-To: References: Subject: [jira] (MNG-5145) Optional compile dependencies being resolved by test dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 22cf62d5d84cf5bea94eb3b65e0ebd09 X-Virus-Checked: Checked by ClamAV on apache.org [ https://jira.codehaus.org/browse/MNG-5145?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Robert Scholte updated MNG-5145: -------------------------------- Description: 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 was: 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: 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 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 > Optional compile dependencies being resolved by test dependencies > ----------------------------------------------------------------- > > Key: MNG-5145 > URL: https://jira.codehaus.org/browse/MNG-5145 > Project: Maven 2 & 3 > Issue Type: Bug > Components: Dependencies > Affects Versions: 3.0.3 > Reporter: Robert Watkins > Priority: Critical > 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 is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira