之前介绍的都是使用protoc工具进行protobuf代码的生成,下面我们看下如何使用gradle插件进行proto文件的编译和代码生成。
protobuf-gradle-plugin
在google的github下有protobuf-gradle-plugin这个项目,这是用于生成protobuf的gradle官方插件(这个插件需要Gradle2.12版本以上),在gradle的build文件加上对应插件:
apply plugin: 'com.google.protobuf'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.1'
}
}
上面的插件将会添加extractIncludeProto(获得依赖proto),extractProto(获得编译的proto文件),generateProto(编译)任务,同时会将他们都配置进build,这样系统构建时都会重新运行这些任务。
自定义配置
设置生成的目标地址
protobuf {
generatedFilesBaseDir = "$projectDir/src/"
}
该配置设置protoc生成代码的目标目录,生成的具体目录还会追加package的对应目录
设置proto文件目录
sourceSets {
main {
proto {
// 除了默认的'src/main/proto'目录新增proto文件的方法
srcDir 'src/main/protobuf'
include '**/*.protodevel'
}
java{
...
}
}
}
设置使用protoc的具体版本
默认使用系统path下设置的protoc,这里还可以定义特定的protoc程序
protobuf {
protoc {
path = '/usr/local/bin/protoc'
}
}
//或者
protobuf {
protoc {
//从仓库下载
artifact = 'com.google.protobuf:protoc:3.0.0'
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端