Я пытаюсь использовать Springdoc-openapi-gradle-plugin для создания документации OpenAPI в моем приложении Spring Boot. Однако, похоже, это не работает.
Я добавил в application-test.yml:
(...)
oauth:
killSwitch: true
springdoc:
swagger-ui:
enabled: false
api-docs:
enabled: true
И для сборки.gradle:
plugins {
id("org.springframework.boot") version "3.2.5"
(...)
id("org.springdoc.openapi-gradle-plugin") version "1.8.0"
}
dependencies {
(...)
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.boot:spring-boot-starter-webflux")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.springframework.boot:spring-boot-starter-test")
(...)
implementation("org.springdoc:springdoc-openapi-ui:1.8.0")
implementation("org.springdoc:springdoc-openapi-kotlin:1.8.0")
}
(...)
tasks.named("forkedSpringBootRun", JavaExecFork::class) {
classpath = sourceSets["test"].runtimeClasspath
}
openApi {
apiDocsUrl.set("http://localhost:8080/v3/api-docs.yaml")
outputDir.set(file("src/main/resources"))
outputFileName.set("test.swagger")
waitTimeInSeconds.set(120)
customBootRun{
classpath.setFrom(sourceSets["test"].runtimeClasspath)
mainClass.set("xxx.TestConfiguration")
args.set(listOf("--spring.profiles.active=test"))
}
}
tasks.named("generateOpenApiDocs") {
dependsOn("testClasses")
mustRunAfter("testClasses")
}
Однако после запуска задачи генерированияOpenApiDocs подождите, пока приложение запустится, и я получил:
(...)
... Tomcat started on port 8080 (http) with context path ''
... Started TestConfiguration.Companion in 10.671 seconds (process running for 10.982)
Execution failed for task ':generateOpenApiDocs'.
> Unable to connect to http://localhost:8080/v3/api-docs.yaml waited for 120 seconds
Интересно, несовместима ли моя версия весенней загрузки или чего-то еще не хватает?
Спасибо




Основная проблема не в этом id("org.springdoc.openapi-gradle-plugin") version "1.8.0", потому что это последняя версия, поддерживаемая Spring Boot 3.
Вам необходимо обновить зависимости openapi. Несколько старых зависимостей не поддерживаются SpringBoot 3.
implementation("org.springdoc:springdoc-openapi-ui:1.8.0")
заменить на: implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0")
Для получения дополнительной информации посетите эту страницу
Возникает ли у вас какая-либо ошибка при доступе к этому URL-адресу /swagger-ui/index.html?
Спасибо @vik, эта комбинация сработала:
plugins { id("org.springframework.boot") version "3.2.5" id("org.springdoc.openapi-gradle-plugin") version "1.8.0" } dependencies { implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0") }Какие дополнительные зависимости мне нужно было бы использовать, если бы мне также требовался доступ к пользовательскому интерфейсу Swagger в «../swagger-ui/index.html»? В очередной раз благодарим за помощь.