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

如何在build.gradle.kts中为多OpenAPI接口生成客户端存根?

多OpenAPI YAML文件生成客户端存根的实现方案

直接编写多个openApiGenerate块无法生效,因为这是插件提供的默认单例任务,只能存在一个实例。正确的做法是创建多个自定义任务,每个任务对应一个YAML文件,任务类型指定为OpenAPI插件的GenerateTask。

实现步骤与代码示例

1. 抽离公共配置

将两个接口生成任务的通用配置(如生成器类型、库选项、关闭测试/文档生成等)抽成函数,避免重复代码:

import org.openapitools.generator.gradle.plugin.tasks.GenerateTask

// 公共配置函数:统一设置通用生成参数
fun configureCommonOpenApiSettings(task: GenerateTask) {
    task.generatorName.set("kotlin")
    task.library.set("multiplatform")
    task.configOptions.set(mapOf("dateLibrary" to "java8"))
    
    // 关闭测试代码与文档生成
    task.generateModelTests.set(false)
    task.generateApiTests.set(false)
    task.generateModelDocumentation.set(false)
    task.generateApiDocumentation.set(false)
    
    // 全局属性:仅生成模型代码
    task.globalProperties.set(mapOf("models" to ""))
}

2. 创建自定义生成任务

为每个YAML文件注册独立的生成任务,分别配置差异化参数(如输入文件、包名等):

// 生成interface1的客户端存根
tasks.register<GenerateTask>("openApiGenerateInterface1") {
    configureCommonOpenApiSettings(this)
    
    inputSpec.set("$rootDir/sharedSDK/openApi/interface1.yaml")
    outputDir.set("$rootDir/sharedSDK/")
    modelPackage.set("package.interface1.model")
    modelNamePrefix.set("V2")
}

// 生成interface2的客户端存根
tasks.register<GenerateTask>("openApiGenerateInterface2") {
    configureCommonOpenApiSettings(this)
    
    inputSpec.set("$rootDir/sharedSDK/openApi/interface2.yaml")
    outputDir.set("$rootDir/sharedSDK/")
    // 注意:为避免类冲突,包名需与interface1区分
    modelPackage.set("package.interface2.model")
    // 可根据需求设置不同的模型前缀,或复用V2
    modelNamePrefix.set("V2")
}

3. 可选:保留原命令兼容性

如果希望继续使用原gradlew openApiGenerate命令执行第一个接口的生成,可让默认任务依赖自定义任务:

tasks.named("openApiGenerate") {
    dependsOn("openApiGenerateInterface1")
}

执行命令

  • 生成interface1:gradlew openApiGenerateInterface1(或原命令gradlew openApiGenerate,如果配置了依赖)
  • 生成interface2:gradlew openApiGenerateInterface2
  • 同时生成两个接口:gradlew openApiGenerateInterface1 openApiGenerateInterface2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:23:09