Maven包括旧版弹簧

时间:2013-08-02 01:50:31

标签: maven build m2eclipse

我用m2e插件在eclipse中有一个maven项目。依赖层次结构显示它正在省略spring 3.2.3而不是3.0.0.RELEASE,如下所示。怎么办呢?它不应该省略旧版本并保留最新版本吗?

enter image description here

1 个答案:

答案 0 :(得分:3)

Maven根据nearest wins strategy的原则工作,同时解决依赖冲突,这意味着它在树中找到的版本越近,它将采用该版本并忽略其他版本。

在您可以运行的情况下 -

mvn dependency:tree -Dverbose -Dincludes=spring-aop

您会注意到,在树形层次结构中,版本3.0.0与版本3.2.3相比更早出现,因此它为什么需要使用3.0.0版本来解决依赖关系。

解决方案:对于这些类型的问题,建议的解决方案是在父pom.xml文件中进行适当的依赖关系管理。就像在你的情况下你可以有这样的东西:

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>3.2.3</version>
      </dependency>
   <dependencies>
  </dependencyManagement>

现在无论什么时候Maven尝试解析spring-aop的版本,它总是会咨询依赖关系管理,并将使用dependencyManagement下定义的版本。

有关详情,请参阅我的博客:how maven resolves dependency conflicts