You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Jostein Gogstad (JIRA)" <ji...@apache.org> on 2016/03/03 13:51:18 UTC
[jira] [Created] (MNG-5988) Dependency mediation should prioritize
transitive dependencies from compile-scoped artifacts
Jostein Gogstad created MNG-5988:
------------------------------------
Summary: Dependency mediation should prioritize transitive dependencies from compile-scoped artifacts
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
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}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>bugreport</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-test-spring</artifactId>
<version>2.16.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
{code}
{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)