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
相关产品推荐
相关产品推荐

