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

Springdoc在多模块Gradle项目中无法运行,寻求同类实践经验

我之前刚好在类似的多模块Gradle+Springdoc项目里踩过坑,给你分享下我当时的解决思路和配置要点:

多模块Gradle项目配置Springdoc的关键要点

1. 调整依赖层级与传递性

你现在把springdoc-openapi-ui放在API子模块,但Application作为Spring Boot的启动模块,必须确保能获取到Springdoc的依赖并加载其配置。这里有两种可行方案:

  • 方案一:把springdoc-openapi-ui(如果是新版本推荐用springdoc-openapi-starter-webmvc-ui)直接移到Application模块的依赖中;
  • 方案二:在API子模块里将依赖声明从implementation改成api,让依赖能传递到上层的Application模块:
    // module1/api/build.gradle
    api group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.4.2'
    
    另外要注意:Application模块必须引入spring-boot-starter-web,因为只有Web环境才能加载Swagger UI页面。

2. 确保API接口被Springdoc扫描到

Springdoc需要扫描到你的Controller类才能生成接口文档,所以要在Application模块的启动类上明确配置扫描路径:

@SpringBootApplication(scanBasePackages = {"com.yourcompany.module1.api", "com.yourcompany.module2.api"})
public class ApplicationStarter {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationStarter.class, args);
    }
}

如果所有模块的包路径有统一前缀(比如com.yourcompany),直接写scanBasePackages = "com.yourcompany"会更省心。

3. 统一管理Swagger配置类

如果需要自定义Swagger文档(比如设置标题、版本、全局参数等),建议把配置类放在Application模块,或者在API子模块中用@Component标记,确保能被启动模块扫描到。示例配置:

@Configuration
public class OpenApiConfig {
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("多模块项目API文档")
                        .version("1.0.0")
                        .description("基于Gradle+Spring Boot+Springdoc的多模块项目接口文档"));
    }
}

4. 检查Gradle模块依赖链路

确认Application模块的build.gradle已正确引入各个API子模块:

dependencies {
    implementation project(':module1:api')
    implementation project(':module2:api')
    // 其他基础依赖...
}

同时子模块内部的依赖也要正确,比如module1/api依赖module1/domain时,要写implementation project(':module1:domain')。

5. 注意版本兼容性

你用的Springdoc 1.4.2对应Spring Boot 2.3.x~2.4.x版本区间,如果你的Spring Boot版本过高(比如2.7+),很可能出现兼容性问题。建议核对Springdoc官方的版本对应关系,比如Spring Boot 2.7+可以搭配Springdoc 1.6.x及以上版本的starter包。

如果调整后还是有问题,可以查看启动日志里是否有Springdoc相关的加载记录,或者尝试访问对应的Swagger UI地址:旧版本是http://localhost:8080/swagger-ui.html,新版本是http://localhost:8080/swagger-ui/index.html,看是否能正常打开。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:47:30