Maven不正确的依赖版本解析

时间:2019-03-18 09:16:07

标签: spring-boot maven-3 spring-hateoas

当包含最新的Spring Hateoas Starter时,Maven下载了错误的Spring Hateoas。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-hateoas</artifactId>
    <version>2.2.0.M1</version>
</dependency>

运行Maven依赖树时,我得到以下信息:

> mvn dependency:tree | grep hateoas
INFO] +- org.springframework.boot:spring-boot-starter-hateoas:jar:2.2.0.M1:compile
[INFO] |  +- org.springframework.hateoas:spring-hateoas:jar:0.25.1.RELEASE:compile

这似乎不正确,因为POM列出了1.0.0.M1作为要包括的版本: Spring Hateoas Starter POM

我试图清除缓存,并手动删除了缓存,然后运行mvn -U。结果总是一样的。

其他信息:

Apache Maven 3.5.4 (Red Hat 3.5.4-4)
Maven home: /usr/share/maven
Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.fc29.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.20.14-200.fc29.x86_64", arch: "amd64", family: "unix"
<repositories>
    <repository> 
        <id>repository.spring.milestone</id> 
        <name>Spring Milestone Repository</name> 
        <url>http://repo.spring.io/milestone</url> 
    </repository>
</repositories>

1 个答案:

答案 0 :(得分:1)

根据经验,“ 请勿混用来自不同框架版本的jars ”。在这种情况下,您尝试将Spring Boot 2.1与更新的Spring Boot 2.2 jar混合使用。这将导致各种奇怪的问题,因为它们还会引入不同的框架版本。 (春季5.2等)

现在,通过spring-boot-starter-parent作为项目的父级可以部分防止这种情况,因为它可以有效地管理依赖项版本。另请参见参考指南的this section

如果您想在当前的Spring Boot版本中尝试另一个Spring HATEOAS版本,则可以尝试覆盖spring-hateoas.version属性。您仍将需要里程碑或快照存储库。

但是我不确定Spring HATEOAS 1.x是否使用Spring 5.1或其他版本。