Protocol Buffers基于Windows平台构建Java版本实现

因为公司业务原因,需要了解熟悉protocol buffer语法结构,关于protocol buffer了解,可以浏览《Protocol Buffers初次认识》,此篇只是针对搭建基于Windows构建Java版本的实现。

Protocol Buffers基于Windows平台构建Java版本实现_第1张图片
protocol buffer

部署准备工作

所谓工欲善其事必先利其器,搭建环境都是学习一门语言知识最基础的入门,搭建protocol buffer需要准备下载的资料如下:

  • 下载protobuf操作系统版本,本地环境window 10 64位,所以下载protoc-3.7.1-win64.zip
  • 下载protobuf构建平台版本,这里主要针对Java版本,所以下载
    protobuf-java-3.7.1.zip
  • 下载maven包,这块主要为了获取编译生成jar包,用于项目开发使用,详情后叙,这里下载apache-maven-3.6.1-bin.zip

配置环境变量

配置环境变量如下

Protocol Buffers基于Windows平台构建Java版本实现_第2张图片
protobuf_win
Protocol Buffers基于Windows平台构建Java版本实现_第3张图片
apache-maven

在path目录下配置%protobuf_win%\bin;%apache-maven%\bin;
配置完毕后,可在CMD中输入proto --version以及mvn -version,可看到版本号,如下所示说明配置成功。

Protocol Buffers基于Windows平台构建Java版本实现_第4张图片
校验环境

测试Protoc将.proto生成对应平台文件

配置完protobuf-win,以及maven环境变量后,可在下载的protobuf-java-3.7.1.zip解压目录下的/protobuf-3.7.1/examples有官方为我们提供的.proto文件,方便我们校验。运行以下指令:

protoc --java_out=${OUTPUT_DIR} path/to/your/proto/file

如果在指定输出目录中能够获取到对应的java类,说明我们配置正确。

proto在java项目的应用

到此,基本protobuf基本可以编译生成了,是不是还有小伙伴疑惑,我们下载的protobuf-java-3.7.1.zip,有何用?

这个文件主要用于配合我们下载配置的maven使用,将我们之前配置成功的protobuf_win下bin目录中的protoc.exe拷贝到protobuf-java-3.7.1.zip解压目录下/protobuf-3.7.1/src中,然后在/protobuf-3.7.1/java中执行cmd,输入

mvn test
mvn install
mvn package

编译后在/protobuf-3.7.1/java/core/target中可以获取到
protobuf-java-x.x.x.jar和protobuf-java-util-x.x.x.jar,将这个两个jar包放到我们利用protoc生成的java类的项目中引用,便可以愉快的使用protoc生成的数据结构了。

当然如果java采用maven框架搭建的,也不需要这么麻烦去生成这个两个jar包,直接在maven文件中配置如下即可。


  com.google.protobuf
  protobuf-java
  x.x.x

确保运行时的版本号与protoc的版本号匹配(或者比版本号更新)。

如果要使用protobuf JsonFormat等功能,需要额外添加protobuf-java-util包依赖项:

< dependency > 
  < groupId > com.google.protobuf  
  < artifactId > protobuf-java-util  
  < version > 3.6.1  

如果java项目中有使用了Gradle,还可以这样设置

compile 'com.google.protobuf:protobuf-java:x.x.x'

同样,请务必检查版本号是否与您正在使用的protoc的版本号相匹配(或者比其更新)。

环境配置大概到此,需要详细了解的伙伴,可以移步到官网
https://github.com/protocolbuffers/protobuf/tree/v3.7.1/java中查询更多的配置。
另外关于Android,如果要使用protocol buffer,可以采用
Protobuf Java Lite Runtime

你可能感兴趣的:(Protocol Buffers基于Windows平台构建Java版本实现)