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

Gradle protobuf扩展:SourceSet能否指定单个proto文件及处理依赖?

关于Gradle SourceSet指定单个Proto文件的问题

完全可以在SourceSet中指定单个proto文件,而非整个目录,有两种常用配置方式:

1. 基于目录+筛选指定文件

先指定源目录,再通过include指令精准筛选需要的单个文件:

sourceSets {
    main {
        proto {
            srcDirs "$projectDir/grpc/src/main/protobuf"
            // 逐个添加需要的proto文件
            include "user_service.proto"
            include "order_service.proto"
        }
    }
}

2. 直接指定单个文件路径

跳过目录配置,直接用files()方法罗列目标proto文件的完整路径:

sourceSets {
    main {
        proto {
            files(
                "$projectDir/grpc/src/main/protobuf/user_service.proto",
                "$projectDir/grpc/src/main/protobuf/order_service.proto"
            )
        }
    }
}

关于文件依赖的支持

如果指定的单个proto文件存在依赖(比如通过import引用了同目录或其他位置的proto文件),必须将所有依赖的proto文件也添加到SourceSet中,否则Proto编译器会抛出“找不到依赖定义”的错误。

举个例子:如果user_service.proto中写了import "common/constants.proto";,那你需要把constants.proto也通过include或files()加入到proto的SourceSet配置里,确保编译器能找到所有关联文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:34:55