繁体   English   中英

Spring 依赖混乱 - 与 Spring Boot 2.5.4 和 Spring Cloud 3.0.3 冲突

[英]Spring Dependency Mess - conflict with Spring Boot 2.5.4 and Spring Cloud 3.0.3

我正在尝试更新一个已经放入厨房水槽的应用程序(或者可能有几个,它们是在臀部加入的)并且我正在通过版本冲突进行分类。

我想更新到 Spring Boot 2.5+ 并使用 Spring Cloud Consul - 我正在尝试引入:

  1. spring-cloud-starter-consul-discovery:3.0.3
  2. spring-boot:2.5.4

对于奖励积分,在 spring-cloud-starter-consul-discovery 中,我看到它引入了 reactor-core:3.4.6,同时引入了 reactor-extra:3.4.3(引入了 reactor-core:3.4 .5). 名单还在继续……

  1. https://search.maven.org/artifact/org.springframework.cloud/spring-cloud-starter-consul-discovery/3.0.3/jar - 最初的争论点是它引入了 spring boot 2.4.6.. . 它被宣传为支持 2.5+,那么该版本不应该引用 2.5+ 吗?

  2. https://search.maven.org/artifact/org.springframework.cloud/spring-cloud-loadbalancer/3.0.3/jar - 这对我来说只是懒惰,reactor-core 正下方是 reactor-extra,为什么Spring 开发人员是否在同一版本的核心中进行了额外的拉动? 参见: https://search.maven.org/artifact/io.projectreactor.addons/reactor-extra/3.4.3/jar

虽然这是一个需要解决的小问题,但它不应该是我的问题。 我是否遗漏了什么,或者这就是它的方式,我不应该期待更多?

首先,您需要查看云和引导依赖项之间的兼容性矩阵 然后,您需要(例如)生成您的bom,您在其中导入

这些 boms 在内部要么导入其他boms,例如您感兴趣的 consul,版本为2.2.8.RELEASE 查看该文件中的properties标记并看到:

<spring-cloud-consul.version>2.2.8.RELEASE</spring-cloud-consul.version>

具体来说:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-consul-dependencies</artifactId>
    <version>${spring-cloud-consul.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

然后可以查看具体的consul bom ,看到consul-discovery的版本是:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    <version>${project.version}</version>
</dependency>

相同的模式可以找出反应器依赖项的版本。


从我投入的 10 分钟来看,我没有看到spring-cloud-starter-consul-discovery:3.0.3的版本会包含在cloud-dependecies中。

仍然可以尝试强制使用特定版本的依赖项。 我们最近在内部的 spring-cloud-kube.netes 中遇到了这样的问题

不过,这可能有效也可能无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM