升级到 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 之间的循环引用

Spring Boot 2.0干货系列:Spring Boot1.5X升级到2.0指南