但是,我们需要自己遍历protoc生成的proto对应的抽象语法树,相对而言还是比较有难度的。 https://github.com/lyft/protoc-gen-star 对上述过程进行了很好的封装,这样我们就可以通过定义简单的Module实现我们在抽象语法树上的操作,转化出我们需要目标代码, 的示例代码插件testdata/protoc-gen-example/main.go,来进行源码分析。 /protoc-gen-mypgs ./testdata/protoc-gen-example/ % cp .. protoc-gen-validate包就在使用,我们可以看下它生成go代码的插件的的入口函数cmd/protoc-gen-validate-go/main.go func main() { optional
在进行开发 protoc 之前,你需要首先在你的计算机中安装 protoc 编译工具。 下载编译工具 进入 Protocol Buffers 的源代码中然后选择发布的版本中,找到对应的版本。 protocolbuffers/protobuf/releases 然后选择 https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc 然后运行 protoc --version 来确定你的编译运行版本已经被正确配置。 通过下图,可以查看配置的文件夹。 ? 通过运行 protoc --version 来确定已经配置正确和编译器版本。 你可以通过运行下面的命令来将 simple.proto 文件为基础生成一个 Java 对象 protoc --proto_path=src --java_out=src/main/java src/main https://www.cwiki.us/display/ProtocolBuffers/Protoc (adsbygoogle = window.adsbygoogle || []).push
作为 Goland 的付费用户,Protocol Buffers 插件在 import 之后不能找到源文件,如下图,很难接受,于是尝试看了下配置的问题。
因为项目原因,无法使用最新版本的protoc。 项目中使用的protoc版本为2.6.1 官网下载的 2.6.1版本执行 protoc -I. --javanano_out: protoc-gen-javanano: Plugin failed with status code 1. protoc-gen-javanano: program not 官方推荐用protobuf lite代替nano,但项目中一直使用nano,弃用nano的话改动太多,所以在git上上传了使用中的protoc 2.6.1源码。
文章目录 一、protoc 编译器简介 二、下载 protoc 编译器 三、使用 protoc 编译器编译 addressbook.proto 源文件 四、参考资料 一、protoc 编译器简介 --- , 类似于 Java 语言的编译器是 javac , C 语言的编译器 gcc , Protobuf 语言的编译器是 protoc 编译器 , 编译上述源码 ; protoc 编译器编译指令 : protoc 编译器编译 addressbook.proto 源文件 ---- 将 addressbook.proto 源文件拷贝到 " D:\develop\protobuf\protoc-3.15.8-win64 \bin\ " 目录 , 执行如下命令 : protoc -ID:\develop\protobuf\protoc-3.15.8-win64\bin\ --java_out=. addressbook.proto -I 参数设置编译的 .proto 源文件所在的目录 , 当前 Protobuf 源码路径是 " D:\develop\protobuf\protoc-3.15.8-win64\bin\ " , -I
准备环境 首先需要在下载protoc编译器【会很慢,建议使用V**】 将下载好的编译器移动到$GOPATH/bin目录 使用命令安装插件 go get -u github.com /golang/protobuf/protoc-gen-go 简单的例子 我们创建一个p.proto文件这个例子中message代表一个消息类型,在消息类型中有三个字段,这里不在多说,大家都明白 string query = 1; int32 pages = 2; int32 article_page = 3; } 现在我们运行一下,目录切换到这个文件的目录执行一下代码 protoc
本文主要讨论通过 protoc 生成 Golang 代码,例如我们常见的命令: protoc -I . --go_out=xxx 想了解更多参数,执行 protoc --help 查看。 *_out 对应 protoc-gen-* 插件; 二、例如新老项目使用的 protoc-gen-go 插件版本不同怎么办? 三、protoc-gen-go 和 protoc-gen-go-grpc 这两个插件有什么不同? 这是我查询到的资料: 原文地址:Differences between protoc-gen-go and protoc-gen-go-grpc[1] 四、protoc 和 protoc-gen-xxx 例如,组合的版本号为: protoc v3.18.1 protoc-gen-go v1.27.1 protoc-gen-go-grpc v1.1.0 grpc v1.41.0 protobuf v1.27.1
我们可以安装稳定版本 go install github.com/envoyproxy/protoc-gen-validate@v0.1.0 然后我们可以在GOPATH看到这个插件 % ls $GOPATH /bin/protoc-gen-validate xxx/bin/protoc-gen-validate 对应的,我们的protoc版本如下 % protoc --version \ -I . \ --plugin=$GOPATH/bin/protoc-gen-validate \ -I ${GOPATH}/pkg/mod/github.com/envoyproxy/protoc-gen-validate@v0.1.0/ \ --go_out=":. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.19.4 // source: example.proto
胖sir:不知道你有没有这样的疑惑,工作中发现很多新接触GO的小伙伴安装protoc的环境需要折腾很久。 小魔童:这个好说,今天咱们就来梳理和总结一下,如何快速高效的安装好protoc的环境 前提,先介绍一下protoc是干啥的? 简而言之,protoc是用于将proto文件编程成各种语言源码文件的工具 例如此处我们可以将proto文件通过protoc工具,编译生成适用于GO语言开发的源码文件xxx.pb.go,一般会和GRPC进行配套使用 ,如果对这个感兴趣,可以在后台留言哦,此处暂且先单一说明一下protoc的环境如何一次性搞定 目前看来windows上的protoc安装相对来说疑问还是比较多的,其实安装还是非常简单的,我们就来说说吧 windows 下安装go protoc 1、下载最新版的golang安装程序 https://github.com/protocolbuffers/protobuf/releases/ 2、 解压,
protoc-gen-doc protoc-gen-doc This is a documentation generator plugin for the Google Protocol Buffers compiler (protoc). // 使用的 protoc --version 为 libprotoc 3.18.1 // 使用的 protoc-gen-go --version 为 protoc-gen-go v1.27.1 // 使用的 protoc-gen-go-grpc --version 为 protoc-gen-go-grpc 1.1.0 // 使用的 protoc-gen-doc --version 为 protoc-gen-doc version 1.5.0 // 在根目录下执行 protoc 命令 protoc \ --go_out=.
各个语言的代码生成工具,对于 Golang 来说,称为 protoc-gen-gobrew install protoc-gen-gobrew install protoc-gen-go-grpc4. 总结:不想理解的话四行命令一起执行,然后去喝杯茶等会再回来就OKbrew install grpcbrew install protobufbrew install protoc-gen-gobrew install protoc-gen-go-grpc安装完后我的本地版本如下:➜ ~ go versiongo version go1.17.2 darwin/amd64➜ ~ protoc --versionlibprotoc 3.17.3➜ ~ protoc-gen-go --versionprotoc-gen-go v1.27.15. 实战:图片接下来用命令protoc --go_out=. demo_service.protoprotoc --go-grpc_out=. demo_service.proto执行完是图片若报错:图片可在
Nat Protoc (2023).
本文我们将只是替换pom.xml中的部分内容,使用protoc-jar-maven-plugin来完成相同的功能。总体来说protoc-jar-maven-plugin方案更加简便。 因为它是基于protoc-jar-maven-plugin翻译proto的message类型,而本文只需要新增对grpc的支持即可。 {project.basedir}/src/main/java/protojava</outputDirectory> <protocArtifact>com.google.protobuf:protoc protoc的翻译操作也不用像使用protobuf-maven-plugin方案那样,要执行一次protobuf:compile后再执行一次protobuf:compile-custom 。 而只需要执行一次protoc-jar:run。 完整文件 <?xml version="1.0" encoding="UTF-8"?
message PersonRequest { string name = 1; } message PersonResponse { Person person = 1; } 接着我们生成代码 protoc --go-mcp_out=. example.proto protoc -I. -I/third/ --go_out=. --go-grpc_out=. --connect-go_out=. github.com/mark3labs/mcp-go/mcp" "github.com/mark3labs/mcp-go/server" example "learn/langchain/protoc_gen_mcp
当然,使用过程中核心逻辑不变,只是入口改为NEWSSEServer即可,具体源码如下 package main import ( example "learn/langchain/protoc_gen_mcp 在使用的最后,我们分析下生成的.pb.mcp.go文件的源码 // Code generated by protoc-gen-mcp-go. example_service.proto package example_service_v1mcp import ( example_service_v1 "learn/langchain/protoc_gen_mcp
首先安装下这个插件 export GOSUMDB=sum.golang.org && go install github.com/redpanda-data/protoc-gen-go-mcp/cmd/ protoc-gen-go-mcp@latest 安装后确认下 % ls $GOPATH/bin |grep mcp protoc-gen-go-mcp 它的工作还依赖下面几个插件 @latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest go install connectrpc.com/connect /cmd/protoc-gen-connect-go@latest go install github.com/bufbuild/buf/cmd/buf@latest 准备完成后我们初始化 /protoc-gen-go-mcp/cmd/protoc-gen-go-mcp"] - local: protoc-gen-go-mcp out: .
一句话:buf=Protobuf界的"瑞士军刀+管家+保安"三合一很多Go开发者第一次接触Protobuf时,都被protoc命令劝退过。 核心能力速览命令人话解释解决什么痛点bufbuild编译.proto文件,检查语法+依赖告别"找不到import"的玄学报错bufgenerate一行生成Go/Java/Python等语言代码不用记10行protoc 避免线上事故bufcurl直接调用RPC接口,不用写客户端调试接口像curlHTTP一样简单bufdep管理.proto依赖(类似gomod)第三方proto库版本可控,不冲突为什么推荐buf而不是原生protoc 展开代码语言:BashAI代码解释#原生protoc日常(痛苦面具):protoc-I=.\--go_out=. 没有复杂protoc参数,没有手动写Makefile,bufgenerate一行搞定!️
(自动生成很方便,也有代价) go get -u github.com/golang/protobuf/protoc-gen-go@v1.3.2 userClient这个单词的由来 ② call 层文件夹名称取自于
[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.8.5:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: protoc version is 'libprotoc with the command [ERROR] mvn <args> -rf :hadoop-common 在打包 Hadoop 2.8.5 的时候,报错信息大概如上,其实很好解释,就是本地的 protoc
> Could not find protoc-3.0.0-osx-aarch_64.exe (com.google.protobuf:protoc:3.0.0). 的地址,如果我们直接打开https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.0.0/protoc-3.0.0-osx-aarch / 得到protoc的版本如下: 所以,我们只需要找到下面的代码,在com.google.protobuf:protoc:3.0.0中添加osx-x86_64即可。 protoc { artifact = 'com.google.protobuf:protoc:3.0.0' } plugins { javalite { artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0' } } //变更后 protoc