Maven dependency not in pom.xml

天涯浪子 提交于 2019-12-12 01:09:43

问题


I have a project which uses spring. It uses version 3.1.1 but, for some reason I really don't know, some spring artifacts are duplicated with two different versions. I look for the those dependencies in all pom.xml files from my project. I also use the dependecy plugin to figure out where were those dependencies included.

Here you have an extract of the output of mvn dependency:tree

[INFO] |  |  \- org.springframework:spring-web:jar:3.1.1.RELEASE:compile
[INFO] |  |     +- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  |     +- org.springframework:spring-beans:jar:3.1.1.RELEASE:compile
[INFO] |  |     +- org.springframework:spring-context:jar:3.1.1.RELEASE:compile
[INFO] |  |     |  +- org.springframework:spring-aop:jar:3.1.1.RELEASE:compile
[INFO] |  |     |  +- org.springframework:spring-expression:jar:3.1.1.RELEASE:compile
[INFO] |  |     |  \- org.springframework:spring-asm:jar:3.0.5.RELEASE:compile
[INFO] |  |     \- org.springframework:spring-core:jar:3.0.5.RELEASE:compile

As far as I know this means that org.springframework:spring-core:jar:3.0.5.RELEASE:compile is included in org.springframework:spring-web:jar:3.1.1.RELEASE:compile.

I workaround this including a dependency with scope provided but I'd need to know why is this happening.

Update: It seems that when I comment the next code the jars are not included in the war.

<dependency>
    <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>${cxf-version}</version>
</dependency>
...
<properties>
    ...
    <cxf-version>2.4.2</cxf-version>
    <spring.version>3.1.1</spring.version>
</properties>

回答1:


The spring-context pom defines the dependency to spring-core with exact the same version as the spring-context.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${project.version}</version>
    <scope>compile</scope>
</dependency>

Thus you must have a dependencyManagement somewhere in your project that tells maven to use 3.0.5.RELEASE instead of 3.1.1.RELEASE.

Take a look at your poms. There must be something like this in a dependencyManagement.

<dependencyManagement>
    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-core</artifactId>
        <version>3.0.5.RELEASE</version>
    </dependency>
</dependencyManagement>

Depending on your maven version it might also be possible that you use dependency import.

PS: same for spring-asm




回答2:


If i add only the org.springframework:spring-web:jar:3.1.1.RELEASE to a project and show the tree via mvn dependency:tree the following output appears:

[INFO] \- org.springframework:spring-web:jar:3.1.1.RELEASE:compile
[INFO]    +- aopalliance:aopalliance:jar:1.0:compile
[INFO]    +- org.springframework:spring-beans:jar:3.1.1.RELEASE:compile
[INFO]    +- org.springframework:spring-context:jar:3.1.1.RELEASE:compile
[INFO]    |  +- org.springframework:spring-aop:jar:3.1.1.RELEASE:compile
[INFO]    |  +- org.springframework:spring-expression:jar:3.1.1.RELEASE:compile
[INFO]    |  \- org.springframework:spring-asm:jar:3.1.1.RELEASE:compile
[INFO]    \- org.springframework:spring-core:jar:3.1.1.RELEASE:compile
[INFO]       \- commons-logging:commons-logging:jar:1.1.1:compile

wher never got a reference to org.springframework:spring-core:jar:3.0.5.RELEASE or org.springframework:spring-asm:jar:3.0.5.RELEASE. This means you have an other dependency which introduces that or you are using a dependencyManagement block overwrites that.



来源:https://stackoverflow.com/questions/21405791/maven-dependency-not-in-pom-xml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!