【问题标题】:Maven incorrect dependancy version resolutionMaven 不正确的依赖版本解析
【发布时间】:2019-03-18 19:09:26
【问题描述】:

当包含最新的 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 或 2.0。
  • 没错。 Spring Boot Parent 是 2.1.3.RELEASE,我应该在最初的问题中包含这些信息吗?
  • 永远不要混合不同版本的框架的 jar。要么坚持使用 2.1,要么全部移至 2.2,但不要混合使用。这会导致各种奇怪的问题。
  • 会调查一下,谢谢,我的印象是主要版本迭代需要注意的地方。
  • 2.1 和 2.2 不同。 2.1 使用 Spring 5.1 , 2.2 使用 Spring 5.2 ,这只是您将引入的差异之一。因此,最终您将混合更多不同框架的罐子,从而导致更多问题。如前所述,无论框架如何,都不要混合不同版本框架的 jar。

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 将 Spring Boot Starter Parent 更新到 2.2.0.M1 解决了我的问题,它还允许我删除 hatoas 依赖项声明中的版本。将密切关注github.com/spring-projects/spring-boot/releases 以了解未来的版本。非常感谢您的帮助
  • 2.2.0 仍然“只是”一个里程碑版本,而不是最终版本。将其视为测试版。
  • 我已考虑到这一点,谢谢。除非我获得 Hateoas 项目 1.0.0.M1 所具有的 Affordances API,否则无法对框架做很多其他事情。
猜你喜欢
  • 2023-04-01
  • 2019-08-23
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
  • 2022-06-21
  • 2016-09-18
  • 1970-01-01
  • 2021-10-13
相关资源
最近更新 更多