Spring Boot Resilience4J:未解决的依赖关系



我正在尝试在一个示例应用程序中实现Resilience4j,并且我遵循了官方文档中的演示应用程序。但是添加以下依赖项会给我一个严重的错误:

Unresolved dependency: org.springframework.cloud spring-cloud-starter-circuitbreaker-reactor-resilience4j

这是我的建筑.gradle

plugins {
id 'org.springframework.boot' version '2.7.2'
id 'io.spring.dependency-management' version '1.0.12.RELEASE'
id 'java'
}
group = 'com.thomsoncodes'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2021.0.3")
}
ext{
resilience4jVersion = '1.7.1'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.projectreactor:reactor-test'

compile('org.springframework.boot:spring-boot-starter-aop')
compile("io.github.resilience4j:resilience4j-spring-boot2:${resilience4jVersion}")
compile("io.github.resilience4j:resilience4j-all:${resilience4jVersion}") // Optional, only required when you want to use the Decorators class
compile("io.github.resilience4j:resilience4j-reactor:${resilience4jVersion}")
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
tasks.named('test') {
useJUnitPlatform()
}

尝试将版本更改为1.7.0。几天前我也犯过类似的错误。出于某种原因,与spring-bot2工件相关的可传递依赖关系似乎存在问题。工件本身是1.7.1版本,但所有可传递的依赖项都是1.7.0版本。

更改后,所有版本都是1.7.0版本,并且有效。

这个问题也是由在项目中使用spring cloud引起的。spring-cloud的bom正在将spring-cloud-circuitbreaker-dependencies-x.y.z.pom添加到类路径中,为reslient4j定义自己的依赖项。在我进行调查时,spring-cloud版本2021.0.5定义了still-relience4j.version 1.7.0。

这个问题已经在这里的一篇旧帖子中报道过:https://github.com/resilience4j/resilience4j/issues/848

如果你想使用更新版本的reslience4j,你可以自己覆盖build.gradle中的依赖项导入,或者排除源自spring cloud的导入。

对我来说,使用Maven而不是Gradle为reslience4j bom添加另一个依赖项解决了这个问题。

<properties>
<resilience4j.version>2.0.2</resilience4j.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-bom</artifactId>
<version>${resilience4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

最新更新