在 IDEA 中使用 Maven 编译 proto 文件

Google Protocol Buffer( 简称 Protobuf) 是  Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。

Protocol Buffers 是一种序列化数据结构的方法。对于通过管线(pipeline)或存储数据进行通信的程序开发上是很有用的。这个方法包含一个接口描述语言,描述一些数据结构,并提供程序工具根据这些描述产生代码,用于将这些数据结构产生或解析数据流。

proto2 提供一个程序产生器,支持C++、Java和Python,第三方类库支持JavaScript;而到了proto3,支持C++、Java (包含JavaNano)、Python、Go、Ruby、Objective-C和C#,并且从 3.0.0 Beta 2 版开始支持JavaScript,第三方类库支持Perl、PHP、Scala和Julia。

我们可以在 Maven 中配置相关插件,然后直接在 IDEA 编译 proto 文件。我们的 iteblog.proto 文件如下:

我们在 pom.xml 文件里面加入如下插件:

注意看上面配置 的  <protocExecutable>/usr/local/bin/protoc</protocExecutable>  ,其中  /usr/local/bin/protoc  是我们 protoc 安装目录,具体如何安装可以参见  《在CentOS下编译安装Protobuf类库》  文件介绍,MAC 平台安装和里面介绍一致。我们在 maven 里面运行 protobuf 插件会调用这个命令,所以需要实现安装好。当 Maven 下载完这个插件之后,你可以在 idea 的 Maven 面板里面看到如下的插件,注意看 protobuf 插件,如下:

我们把上面的 iteblog.proto 文件放到 maven 工程的  src/main/proto/ 目录下,如下:

然后我们双击上图中的的  protobuf:compile  选项,这时候 maven 开始为我们将  iteblog.proto  文件编译成 java 类:

从上面的输出可以看出,放到当前工程的  target/generated-sources/protobuf/java  目录下面,其中生成的  com.iteblog.data.coprocessor.generated.IteblogProtos.java  就是我们上面定义的。当然,我们还可以通过这个插件生成 cpp、c#、js 以及 python 的文件,这里就不介绍了。

如果你不想用 maven 来编译,你也可以直接使用 protoc 命令来编译:

protoc --java_out=/Users/iteblog/ iteblog.proto

上面命令会在 /Users/iteblog/ 目录下面生成我们要的 java 类。如果你是 windows,你也可以使用 protoc.exe 来编译,使用和 protoc 一样。

关于 protobuf-maven-plugin 插件的更多用法可以参见其官网 https://www.xolstice.org/protobuf-maven-plugin/usage.html。

在看和转发

都是一种支持

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章