【问题标题】:Maven including older version of springMaven包括旧版本的spring
【发布时间】:2013-08-03 04:04:38
【问题描述】:

我在 Eclipse 中有一个带有 m2e 插件的 maven 项目。依赖层次结构显示它省略了 spring 3.2.3 代替 3.0.0.RELEASE ,如下所示。不然怎么办?不应该省略旧版本,保持最新吗?

【问题讨论】:

    标签: maven build m2eclipse


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      相关资源
      最近更新 更多