升级到 Spring Boot 2.5.1 和 Spring Cloud 2020.0.3 时,Netflix zuul 和 Ribbon 的 Maven 依赖项有啥不同吗
Posted
技术标签:
【中文标题】升级到 Spring Boot 2.5.1 和 Spring Cloud 2020.0.3 时,Netflix zuul 和 Ribbon 的 Maven 依赖项有啥不同吗【英文标题】:is there any difference in maven dependency for Netflix zuul and ribbon while upgrading to Spring boot 2.5.1 and spring cloud 2020.0.3升级到 Spring Boot 2.5.1 和 Spring Cloud 2020.0.3 时,Netflix zuul 和 Ribbon 的 Maven 依赖项有什么不同吗 【发布时间】:2021-09-06 15:55:26 【问题描述】:我正在尝试将我的 Spring Boot 版本从 2.1.5.RELEASE 升级到 2.5.1,因此我根据发布火车 Spring Boot 对 Spring Cloud 的兼容性将 Spring Cloud 版本从 Greenwich.RELEASE 更改为 2020.0.3。我还在我的项目中使用 spring-cloud-starter-netflix-zuul 和 spring-cloud-starter-netflix-ribbon。我面临的问题是当我构建 maven 时,出现如下错误
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] 'dependencies.dependency.version' for org.springframework.cloud:spring-cloud-starter-netflix-zuul:jar is missing. @ com.xx.xxx.xxx:[unknown-version], C:\Users\xx\pom.xml, line xx, column xx
[ERROR] 'dependencies.dependency.version' for org.springframework.cloud:spring-cloud-starter-netflix-ribbon:jar is missing. @ com.xx.xxx.xxxh:[unknown-version], C:\Users\xx\pom.xml, line xx, column xx
我的pom文件如下
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.1</version>
</parent>
<repositories>
</repositories>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
...
谁能帮忙解决这个错误,在此先感谢
【问题讨论】:
【参考方案1】:之前处于维护模式的许多与 Netflix 相关的模块已成为 removed in Spring Cloud 2020。这包括您正在使用的 Ribbon 和 Zuul。 Spring Cloud 团队recommend 将 Ribbon 替换为 Spring Cloud Loadbalancer,将 Zuul 替换为 Spring Cloud Gateway。
【讨论】:
【参考方案2】:spring-cloud 和 netflix-zuul 将使用以下版本。
spring-boot-starter-parent: 2.1.3.RELEASE
java.version: 1.8
spring-cloud.version: Greenwich.RELEASE
spring-cloud-starter-netflix-zuul: 2.1.0.RELEASE
spring-cloud-starter-netflix-eureka-client: 2.1.0.RELEASE
jackson-dataformat-xml: 2.9.9
spring-cloud-starter-netflix-eureka-server: 2.1.0.RELEASE
【讨论】:
【参考方案3】:Spring 在 2.4.0 之后移除了 zuul,所以最好使用以下版本来顺利执行。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
【讨论】:
以上是关于升级到 Spring Boot 2.5.1 和 Spring Cloud 2020.0.3 时,Netflix zuul 和 Ribbon 的 Maven 依赖项有啥不同吗的主要内容,如果未能解决你的问题,请参考以下文章
MateCloud 3.6.8 发布,升级至Spring Boot 2.5.1版本
TypeNotPresentExceptionProxy,将Spring Boot Starter父级从2.1.8升级到2.2.1
升级到 Spring Boot 2.6.1 和 Spring Cloud 2021.0.0 后 Spring Cloud Stream 启动错误
Spring Boot 版本从 2.1.6 升级到 2.2.1 和 spring-cloud 问题
升级到 Spring Boot 2.6 时 Spring Security 和 org.springdoc.ui.SwaggerConfig 之间的循环引用