因為公司業(yè)務(wù)原因,需要了解熟悉protocol buffer
語法結(jié)構(gòu),關(guān)于protocol buffer
了解筋帖,可以瀏覽《Protocol Buffers初次認(rèn)識》塘淑,此篇只是針對搭建基于Windows構(gòu)建Java版本的實現(xiàn)。
部署準(zhǔn)備工作
所謂工欲善其事必先利其器同欠,搭建環(huán)境都是學(xué)習(xí)一門語言知識最基礎(chǔ)的入門,搭建protocol buffer
需要準(zhǔn)備下載的資料如下:
- 下載protobuf操作系統(tǒng)版本,本地環(huán)境window 10 64位忱反,所以下載protoc-3.7.1-win64.zip
- 下載protobuf構(gòu)建平臺版本,這里主要針對Java版本滤愕,所以下載
protobuf-java-3.7.1.zip - 下載maven包温算,這塊主要為了獲取編譯生成jar包,用于項目開發(fā)使用间影,詳情后敘注竿,這里下載apache-maven-3.6.1-bin.zip
配置環(huán)境變量
配置環(huán)境變量如下
在path目錄下配置%protobuf_win%\bin;%apache-maven%\bin;
配置完畢后,可在CMD中輸入proto --version
以及mvn -version
,可看到版本號,如下所示說明配置成功巩割。
測試Protoc將.proto生成對應(yīng)平臺文件
配置完protobuf-win裙顽,以及maven環(huán)境變量后,可在下載的protobuf-java-3.7.1.zip解壓目錄下的/protobuf-3.7.1/examples有官方為我們提供的.proto文件宣谈,方便我們校驗愈犹。運行以下指令:
protoc --java_out=${OUTPUT_DIR} path/to/your/proto/file
如果在指定輸出目錄中能夠獲取到對應(yīng)的java類,說明我們配置正確蒲祈。
proto在java項目的應(yīng)用
到此甘萧,基本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
中執(zhí)行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
生成的數(shù)據(jù)結(jié)構(gòu)了徒恋。
當(dāng)然如果java采用maven框架搭建的,也不需要這么麻煩去生成這個兩個jar包欢伏,直接在maven文件中配置如下即可入挣。
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>x.x.x</version>
</dependency>
確保運行時的版本號與protoc的版本號匹配(或者比版本號更新)。
如果要使用protobuf JsonFormat等功能硝拧,需要額外添加protobuf-java-util包依賴項:
< dependency >
< groupId > com.google.protobuf </ groupId >
< artifactId > protobuf-java-util </ artifactId >
< version > 3.6.1 </ version >
</ dependency >
如果java項目中有使用了Gradle径筏,還可以這樣設(shè)置
compile 'com.google.protobuf:protobuf-java:x.x.x'
同樣,請務(wù)必檢查版本號是否與您正在使用的protoc的版本號相匹配(或者比其更新)障陶。
環(huán)境配置大概到此滋恬,需要詳細了解的伙伴,可以移步到官網(wǎng)
https://github.com/protocolbuffers/protobuf/tree/v3.7.1/java中查詢更多的配置抱究。
另外關(guān)于Android恢氯,如果要使用protocol buffer
,可以采用
Protobuf Java Lite Runtime
鼓寺。