You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非Spring Boot应用使用springdoc-openapi-gradle-plugin遇bootRun任务错误

解决非Spring Boot Spring MVC项目使用springdoc-openapi-gradle-plugin的问题

核心问题根源

你在plugins块中引入了org.springframework.boot插件,该插件会自动创建bootRun任务,但你的项目并非Spring Boot架构,没有配置mainClass,因此触发了报错。

具体修复步骤

1. 移除Spring Boot Gradle插件

修改plugins块,删除org.springframework.boot插件——非Spring Boot项目完全不需要它:

plugins {
    `java-library`
    id("war")
    id("org.springdoc.openapi-gradle-plugin") version "1.9.0"
}

2. 调整依赖配置

移除Spring Boot自动配置依赖,替换为适配Spring MVC的springdoc专属依赖:

dependencies {
    // 保留你的Spring MVC基础依赖,版本请匹配项目实际使用的Spring版本
    implementation("org.springframework:spring-webmvc:5.3.20")
    // springdoc适配Spring MVC的核心依赖
    implementation("org.springdoc:springdoc-openapi-webmvc-core:1.8.0")
    // 若需要OpenAPI UI界面,添加此依赖(可选)
    implementation("org.springdoc:springdoc-openapi-ui:1.8.0")
}

3. 配置springdoc-openapi-gradle-plugin

由于你的项目是WAR包,需部署到外部容器运行,插件需要访问运行中的应用API文档端点来生成文件,有两种配置方式:

方式一:手动启动应用后生成

保留你原有的openApi配置,先将WAR包部署到Tomcat等容器并启动,确保http://localhost:8080/myapp/apidoc/doc.yaml可访问,再执行Gradle任务:

./gradlew openApiGenerate

方式二:用Gradle自动启动应用

如果想通过Gradle一键完成启动+文档生成,可添加gretty插件运行WAR包:

  • 先在plugins块中添加gretty:
plugins {
    // ... 其他已配置的插件
    id("org.gretty") version "4.0.3"
}
  • 配置gretty的端口和上下文路径:
gretty {
    httpPort = 8080
    contextPath = "/myapp"
}
  • 创建自定义任务,先启动应用再生成文档(给应用启动留缓冲时间):
tasks.register("generateOpenApi") {
    dependsOn(tasks.startTomcat)
    finalizedBy(tasks.openApiGenerate)
    doFirst {
        Thread.sleep(5000)
    }
}

最后执行自定义任务即可:

./gradlew generateOpenApi

4. 配置Spring MVC暴露OpenAPI端点

在你的Spring MVC配置类中,注册springdoc的必要Bean:

import org.springdoc.core.SpringDocConfigProperties;
import org.springdoc.core.SpringDocConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OpenApiConfig {
    @Bean
    public SpringDocConfiguration springDocConfiguration() {
        return new SpringDocConfiguration();
    }

    @Bean
    public SpringDocConfigProperties springDocConfigProperties() {
        return new SpringDocConfigProperties();
    }
}

同时确保Spring MVC配置启用了注解驱动,若使用UI则需保证静态资源可正常访问。

内容的提问来源于stack exchange,提问作者JustEpic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:40:13