spring 引导 2.4.3 的依赖项 table

Dependency table for spring boot 2.4.3

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

就我而言,我有这个

我不知道 spring boot 2.4.3 附带什么版本的依赖项或云版本到 2020.0.1。

我该如何解决这个问题,例如我想将 spring 引导和 spring 云迁移到其最新版本。

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

为了找出要使用的 BOM,您可以使用 this compatibility matrix or the endpoint that @spencergibb mentioned: https://start.spring.io/actuator/info

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

更新: 这是一个 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'
}

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

您的版本:2.1.5

2020.0.1 Spring云支持的版本: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 云提供的默认库并删除显式依赖项。