Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id AC6E8200B33 for ; Wed, 29 Jun 2016 17:15:19 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id AB02F160A6F; Wed, 29 Jun 2016 15:15:19 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id D5EC6160A57 for ; Wed, 29 Jun 2016 17:15:18 +0200 (CEST) Received: (qmail 99738 invoked by uid 500); 29 Jun 2016 15:15:18 -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 99612 invoked by uid 99); 29 Jun 2016 15:15:17 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Jun 2016 15:15:17 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id C907F2C02A4 for ; Wed, 29 Jun 2016 15:15:17 +0000 (UTC) Date: Wed, 29 Jun 2016 15:15:17 +0000 (UTC) From: "Christian Schulte (JIRA)" To: issues@maven.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (MNG-5988) Dependency mediation should prioritize transitive dependencies based on scope. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Wed, 29 Jun 2016 15:15:19 -0000 [ https://issues.apache.org/jira/browse/MNG-5988?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Christian Schulte updated MNG-5988: ----------------------------------- Attachment: PRE.svg Take a look at this picture and see how many times {{spring-beans}} and {{spring-context}} appear. > Dependency mediation should prioritize transitive dependencies based on scope. > ------------------------------------------------------------------------------ > > Key: MNG-5988 > URL: https://issues.apache.org/jira/browse/MNG-5988 > Project: Maven > Issue Type: Bug > Components: Dependencies > Affects Versions: 3.2.3 > Reporter: Jostein Gogstad > Attachments: PRE.svg > > > The [documentation|https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html] states that dependency mediation only supports "nearest definition", regardless of the scope of the parent dependency. > If both compile- and test scoped dependencies shares the same transitive dependency, the test-scoped one will win if it has shallower depth. That in turn will lead to runtime exceptions since the transitive dependency is no longer on the classpath. > Take the following pom from a typical [Spring Boot|http://projects.spring.io/spring-boot/] application. Since the {{camel-test-spring}} dependency also depends on spring, it wins and Spring is no longer available to the application at runtime. > {code:xml} > > 4.0.0 > com.example > bugreport > jar > 1.0.0-SNAPSHOT > > > org.springframework.boot > spring-boot-starter-web > 1.3.2.RELEASE > > > org.apache.camel > camel-test-spring > 2.16.2 > test > > > > {code} > Now look for {{spring-beans}} or {{spring-context}} in the following dependency graphs: > {code:xml|title=mvn dependency:tree (with camel-test-spring)} > [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ bugreport --- > [INFO] com.example:bugreport:jar:1.0.0-SNAPSHOT > [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.3.2.RELEASE:compile > [INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.3.2.RELEASE:compile > [INFO] | | +- org.springframework.boot:spring-boot:jar:1.3.2.RELEASE:compile > [INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.3.2.RELEASE:compile > [INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.3.2.RELEASE:compile > [INFO] | | | +- ch.qos.logback:logback-classic:jar:1.1.3:compile > [INFO] | | | | \- ch.qos.logback:logback-core:jar:1.1.3:compile > [INFO] | | | +- org.slf4j:jcl-over-slf4j:jar:1.7.13:compile > [INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.13:compile > [INFO] | | | \- org.slf4j:log4j-over-slf4j:jar:1.7.13:compile > [INFO] | | \- org.yaml:snakeyaml:jar:1.16:runtime > [INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.3.2.RELEASE:compile > [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.0.30:compile > [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.0.30:compile > [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-logging-juli:jar:8.0.30:compile > [INFO] | | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.0.30:compile > [INFO] | +- org.springframework.boot:spring-boot-starter-validation:jar:1.3.2.RELEASE:compile > [INFO] | | \- org.hibernate:hibernate-validator:jar:5.2.2.Final:compile > [INFO] | | +- javax.validation:validation-api:jar:1.1.0.Final:compile > [INFO] | | +- org.jboss.logging:jboss-logging:jar:3.2.1.Final:compile > [INFO] | | \- com.fasterxml:classmate:jar:1.1.0:compile > [INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.5:compile > [INFO] | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.0:compile > [INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.6.5:compile > [INFO] | +- org.springframework:spring-web:jar:4.2.4.RELEASE:compile > [INFO] | \- org.springframework:spring-webmvc:jar:4.2.4.RELEASE:compile > [INFO] \- org.apache.camel:camel-test-spring:jar:2.16.2:test > [INFO] +- org.apache.camel:camel-test:jar:2.16.2:test > [INFO] | +- org.apache.camel:camel-core:jar:2.16.2:test > [INFO] | | \- org.slf4j:slf4j-api:jar:1.6.6:compile > [INFO] | \- junit:junit:jar:4.11:test > [INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test > [INFO] +- org.apache.camel:camel-spring:jar:2.16.2:test > [INFO] +- org.springframework:spring-test:jar:4.1.9.RELEASE:test > [INFO] +- org.springframework:spring-context:jar:4.1.9.RELEASE:compile > [INFO] +- org.springframework:spring-beans:jar:4.1.9.RELEASE:compile > [INFO] +- org.springframework:spring-expression:jar:4.1.9.RELEASE:compile > [INFO] +- org.springframework:spring-aop:jar:4.1.9.RELEASE:compile > [INFO] | \- aopalliance:aopalliance:jar:1.0:compile > [INFO] +- org.springframework:spring-tx:jar:4.1.9.RELEASE:test > [INFO] +- org.springframework:spring-core:jar:4.1.9.RELEASE:compile > [INFO] | \- commons-logging:commons-logging:jar:1.2:compile > [INFO] +- com.sun.xml.bind:jaxb-core:jar:2.2.11:test > [INFO] \- com.sun.xml.bind:jaxb-impl:jar:2.2.11:test > {code} > {code:xml|title=mvn dependency:tree (without camel-test-spring)} > [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ bugreport --- > [INFO] com.example:bugreport:jar:1.0.0-SNAPSHOT > [INFO] \- org.springframework.boot:spring-boot-starter-web:jar:1.3.2.RELEASE:compile > [INFO] +- org.springframework.boot:spring-boot-starter:jar:1.3.2.RELEASE:compile > [INFO] | +- org.springframework.boot:spring-boot:jar:1.3.2.RELEASE:compile > [INFO] | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.3.2.RELEASE:compile > [INFO] | +- org.springframework.boot:spring-boot-starter-logging:jar:1.3.2.RELEASE:compile > [INFO] | | +- ch.qos.logback:logback-classic:jar:1.1.3:compile > [INFO] | | | +- ch.qos.logback:logback-core:jar:1.1.3:compile > [INFO] | | | \- org.slf4j:slf4j-api:jar:1.7.7:compile > [INFO] | | +- org.slf4j:jcl-over-slf4j:jar:1.7.13:compile > [INFO] | | +- org.slf4j:jul-to-slf4j:jar:1.7.13:compile > [INFO] | | \- org.slf4j:log4j-over-slf4j:jar:1.7.13:compile > [INFO] | +- org.springframework:spring-core:jar:4.2.4.RELEASE:compile > [INFO] | \- org.yaml:snakeyaml:jar:1.16:runtime > [INFO] +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.3.2.RELEASE:compile > [INFO] | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.0.30:compile > [INFO] | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.0.30:compile > [INFO] | +- org.apache.tomcat.embed:tomcat-embed-logging-juli:jar:8.0.30:compile > [INFO] | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.0.30:compile > [INFO] +- org.springframework.boot:spring-boot-starter-validation:jar:1.3.2.RELEASE:compile > [INFO] | \- org.hibernate:hibernate-validator:jar:5.2.2.Final:compile > [INFO] | +- javax.validation:validation-api:jar:1.1.0.Final:compile > [INFO] | +- org.jboss.logging:jboss-logging:jar:3.2.1.Final:compile > [INFO] | \- com.fasterxml:classmate:jar:1.1.0:compile > [INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.5:compile > [INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.0:compile > [INFO] | \- com.fasterxml.jackson.core:jackson-core:jar:2.6.5:compile > [INFO] +- org.springframework:spring-web:jar:4.2.4.RELEASE:compile > [INFO] | +- org.springframework:spring-aop:jar:4.2.4.RELEASE:compile > [INFO] | | \- aopalliance:aopalliance:jar:1.0:compile > [INFO] | +- org.springframework:spring-beans:jar:4.2.4.RELEASE:compile > [INFO] | \- org.springframework:spring-context:jar:4.2.4.RELEASE:compile > [INFO] \- org.springframework:spring-webmvc:jar:4.2.4.RELEASE:compile > [INFO] \- org.springframework:spring-expression:jar:4.2.4.RELEASE:compile > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)