上文《Grpc框架实战微服务调用系列(二)Grpc框架项目api层实战》我们在api层定义了两个proto文件,分别是userdto.proto文件和userservice.proto文件,最后我们使用的是maven工具进行编译,这里的话,在谷歌官方也提供了Grpc编译的工具,只是这个工具主要是命令行的形式。所以本文我们也来演示下使用这个protoc工具编译前面用到的两个proto文件。
一、下载protoc工具
如果使用protoc工具编译proto文件,那么首先就需要下载proto文件,这里官方提供的下载地址是:官网下载
在官网提供了windows,linux等平台的工具包:
我们根据实际需要进行下载即可,这里我们下载的版本是linux,因为要在服务器上进行演示。我们下载之后,把它上传到服务器上并且解压,示例图如下:
二、编译proto文件
接着我们准备进行proto文件的编译,这里可以编译成各种语言,这里以java为示例,我们编译的命令如下:
/mmt/bin/protoc --java_out=dist src/userdto.proto
简而言之就是:
protoc --java_out=${输出目录} ${编译文件}
以上的命令是我们编译当前的proto文件没有import的情况,如果当前文件有import的情况,那么我们就需要添加一个依赖目录,示例如下:
/mmt/bin/protoc -I=/mmt/src --java_out=dist /mmt/src/userservice.proto
简而言之就是:
protoc -I=${依赖存在的目录} --java_out=${输出目录} ${编译文件}
执行完成之后,我们可以看到生成了对应的文件信息:
但是细心的话我们会发现,这里userservice.proto少生成了一个文件,这里只生成了UserProto文件,但是没有使用maven里面的UserServiceGrpc这个文件。也就是userservice.proto文件的service方法没有生成类,所以这时候是不能生效的,那么如何使用protoc工具生成service的代码呢?这里我们需要用到插件,这个插件的话可以从maven仓库进行下载,下载地址是:protoc插件下载。具体的信息如下图:
这里我们找一个linux版本的,把它放在protoc同目录文件夹下:
然后我们再执行下面的编译命令就可以生成service的代码了:
/mmt/bin/protoc --plugin=protoc-gen-grpc-java=/mmt/bin/protoc-gen-grpc-java-1.60.0-linux-x86_64.exe --proto_path=/mmt/src --grpc-java_out=/mmt/dist /mmt/src/userservice.proto
备注:
1、这里编译service的时候记得添加上这个plugin 2、这边编译service的话,输出的参数是grpc-java-out
然后我们编译完后就可以看到已经生成了service相关的java代码了。
然后我们把这里生成的java放到项目里面的api层也就可以使用了。
还没有评论,来说两句吧...