当包含最新的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>
根据经验,“永远不要混合来自不同版本框架的罐子”。在这种情况下,您尝试将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或其他版本。