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

gRPC Kotlin插件未生成DSL代码,现有Gradle配置问题排查

你的配置确实存在遗漏,当前仅配置了gRPC的Java/Kotlin存根生成插件,没有配置Protobuf官方的Kotlin语言绑定生成插件,这部分插件负责生成你需要的Kotlin DSL风格的消息构造代码。

修复步骤

  • 补充Protobuf Kotlin代码生成插件配置
    在protobuf的plugins闭包内新增kotlin插件声明,同时在generateProtoTasks的插件应用列表中添加该插件。
  • 补充Protobuf Kotlin运行时依赖
    需要在dependencies闭包中添加对应版本的protobuf-kotlin依赖,和你使用的protoc版本保持一致即可。

修改后完整配置

protobuf {
//    generatedFilesBaseDir = "generated-sources"
    protoc {
        artifact = "com.google.protobuf:protoc:3.17.3"
    }
    plugins {
        id("grpc") {
            artifact = "io.grpc:protoc-gen-grpc-java:1.39.0"
        }

        id("grpckt") {
            artifact = "io.grpc:protoc-gen-grpc-kotlin:1.2.0:jdk7@jar"
        }
        
        // 新增:Protobuf Kotlin 代码生成插件
        id("kotlin") {
            artifact = "com.google.protobuf:protoc-gen-kotlin:3.17.3:jdk7@jar"
        }
    }
    generateProtoTasks {
        ofSourceSet("main").forEach {
            it.plugins {
                id("grpc") {}
                id("grpckt") {}
                id("kotlin") {} // 新增:应用Kotlin插件生成消息的Kotlin绑定代码
            }
        }
    }
}
dependencies {
    // 新增:Protobuf Kotlin 运行时依赖,版本和protoc版本保持一致
    implementation("com.google.protobuf:protobuf-kotlin:3.17.3")
    // 原有其他依赖保持不变即可
}

验证方法

修改完成后执行./gradlew clean generateProto任务,生成的代码中会包含对应proto消息的Kotlin DSL扩展,你就可以直接使用类似语法构造对象,无需再手动调用builder:

val user = user {
    id = 123
    name = "张三"
    email = "zhangsan@example.com"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:06:08