【问题标题】:Dependency table for spring boot 2.4.3spring boot 2.4.3的依赖表
【发布时间】:2021-03-08 20:15:51
【问题描述】:

我很难定义哪些依赖版本相互兼容。

在我的情况下,我有这个

我不知道spring boot 2.4.3下面的依赖是什么版本或者云版本到2020.0.1。

我该如何解决这个问题,例如我想将 Spring Boot 和 Spring Cloud 迁移到其最新版本。

【问题讨论】:

  • 这里有一个提示start.spring.io/actuator/info。此外,截至 2020.0(其模块的 3.x 版),hystrix 也不是 spring cloud 的一部分。这是在 2019 年 12 月宣布的spring.io/blog/2019/12/23/…
  • "spring-cloud-services":{"2.2.6.RELEASE":"Spring Boot >=2.2.0.RELEASE 和 =2.3.0.RELEASE 和 2.4.x 2.4.3 所以没有版本涵盖这个吗?如果在依赖项中不包含 hystrix 是什么意思? @spencergibb

标签: spring spring-boot spring-cloud


【解决方案1】:

最好不要自己定义版本,而是使用 BOM 并让他们为您定义版本:

为了找出要使用的 BOM,您可以使用this compatibility matrix 或@spencergibb 提到的端点:https://start.spring.io/actuator/info

如果您想使用不在 BOM 中的 Spring 项目,很可能不支持该 Spring 项目(例如:@spencergibb 提到的最新 Spring Cloud 的 Netflix 库)。

更新:这是一个 Gradle 示例,但您可以使用 Spring Initializer 生成整个项目:

plugins {
  id 'org.springframework.boot' version '2.4.3'
  id 'io.spring.dependency-management' version '1.0.11.RELEASE'
  id 'java'
}

repositories {
  mavenCentral()
}
dependencyManagement {
  imports {
    mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2020.0.1'
  }
}
dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-web'
  implementation 'org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j'
}

【讨论】:

  • 如果我理解得很好,我只是定义了主要依赖项并为尚未包含的依赖项添加了版本控制。 springbootVersion=2.4.3 springCloudVersion=2020.0.1 springCloudStarterNetflixHystrixVersion=2.2.7.RELEASE springCloudServicesStarterConfigClientVersion=3.2.1.RELEASE 和 mavenBom "org.springframework.boot:spring-boot-dependencies:${springbootVersion}" mavenBom "org.springframework. cloud:spring-cloud-dependencies:${springCloudVersion}" 但仍然让应用程序运行失败。
  • 不,您根本不应该定义版本(BOM 除外),BOM 将为您定义版本(请参阅我编辑的答案)。查看spring-cloud-circuitbreaker 的文档或使用spring initializer 生成项目
【解决方案2】:

这可能是因为从一开始就包含的依赖项与您明确定义的依赖项之间存在冲突。例如,采用这个依赖:spring-cloud-contract

您的版本:2.1.5

2020.0.1 Spring cloud 支持的版本:3.0.1(查看@Jonatan提到的link

尝试排除您已明确定义的内置依赖项。对于 Maven,它将是:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2020.0.1</version>
            <type>pom</type>
            <scope>import</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-contract-verifier</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</dependencyManagement>

可能不会工作,因为并非所有库都向后兼容。我建议使用 spring cloud 提供的默认库并删除显式依赖项。

【讨论】:

    猜你喜欢
    • 2020-09-10
    • 2019-02-26
    • 2016-09-05
    • 2018-11-21
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多