Maven依赖不在pom.xml中

时间:2014-01-28 12:39:56

标签: java spring maven maven-2 maven-dependency-plugin

我有一个使用spring的项目。它使用3.1.1版本,但由于某种原因我真的不知道,一些弹簧工件与两个不同的版本重复。我在项目的所有pom.xml文件中查找这些依赖项。我还使用dependecy插件来确定包含这些依赖项的位置。

这里有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

据我所知,这意味着org.springframework:spring-core:jar:3.0.5.RELEASE:compile中包含org.springframework:spring-web:jar:3.1.1.RELEASE:compile

我解决了这个问题,包括范围provided的依赖关系,但我需要知道为什么会发生这种情况。

更新: 似乎当我评论下一个代码时,战争中不包括罐子。

<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>

2 个答案:

答案 0 :(得分:0)

spring-context pom使用与spring-core完全相同的版本定义与spring-context的相关性。

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

因此,您的项目中必须有一个dependencyManagement,告诉maven使用3.0.5.RELEASE代替3.1.1.RELEASE

看看你的poms。 dependencyManagement中必须有类似的内容。

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

根据您的maven版本,您也可能使用dependency import

PS:spring-asm

相同

答案 1 :(得分:0)

如果我只将org.springframework:spring-web:jar:3.1.1.RELEASE添加到项目并通过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.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

从未获得对org.springframework:spring-core:jar:3.0.5.RELEASEorg.springframework:spring-asm:jar:3.0.5.RELEASE的引用。这意味着你有一个引入它的其他依赖项,或者你正在使用dependencyManagement块覆盖它。