protoc.exe java_protobuf——使用protoc.exe生成message文件
1.下載protoc.exe和對應jar包
protoc.exe從https://github.com/protocolbuffers/protobuf/releases下載protoc-3.7.0-win64.zip,解壓后bin目錄下有對應proto.exe文件。
jar包去maven庫中搜索protobuf-java-3.7.0.jar.
2.編寫test.proto文件
package message;
option java_package = "com.test.message";
option java_multiple_files = true;//生成的message文件是多個,在一個包下,否則是一個包裝類
option optimize_for = LITE_RUNTIME;
//Protocol Buffer定義三種優化級別SPEED/CODE_SIZE/LITE_RUNTIME。缺省情況下是SPEED。
//SPEED: 表示生成的代碼運行效率高,但是由此生成的代碼編譯后會占用更多的空間。
//CODE_SIZE: 和SPEED恰恰相反,代碼運行效率較低,但是由此生成的代碼編譯后會占用更少的空間,通常用于資源有限的平臺,如Mobile。
//LITE_RUNTIME: 生成的代碼執行效率高,同時生成代碼編譯后的所占用的空間也是非常少。這是以犧牲Protocol Buffer提供的反射功能為代價的。
// SPEED和LITE_RUNTIME相比,在于調試級別上,例如 msg.SerializeToString(&str) 在SPEED模式下會利用反射機制打印出詳細字段和字段值,但是LITE_RUNTIME則僅僅打印字段值組成的字符串;
message RequestDataMsg1
{
required int32 id = 1;
optional string dataType = 2;
}
message StringIntegerMap
{
required string dataName = 1;
required int32 data = 2;
}
message ResponseDataMsg2
{
repeated StringIntegerMap dataMap = 1;
}
3.編寫generateProto.bat,使用批處理執行protoc.exe --java_out=生成message的目錄?test.proto 命令生成message文件(可以在命令行直接去protoc.exe所在目錄執行)
@title generate message
@cd %~dp0
@rem %~dp0 “d”為Drive的縮寫,即為驅動器,磁盤、“p”為Path縮寫,即為路徑,目錄
@rem current dir: %~dp0
%~d0
@echo batch generate proto
@rem @author chencan
@rem @echo off常用于開頭,表示不顯示所有的命令行信息,包括此句,相當于在每一行開頭加 @
@rem 在批處理文件里面用 for,變量就用 %%
@rem set是對參數的定義,動態的話需要加上/p的條件
@echo off
set /p protoFile=please input filename:
if exist "%protoFile%" goto:process
rem call跳轉到子批處理,并且不終止父批處理,start 是在新窗口執行
echo file not exist!
rem 再次執行當前批處理
call %0
:process
@echo file:"%protoFile%" exist!
@echo generating message,please wait...
@protoc.exe --java_out=../src %protoFile%
@echo generate success!
pause
goto:eof
proto文件,protoc.exe,generateProto.bat放在同一文件夾下,執行generateProto.bat腳本。
done
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的protoc.exe java_protobuf——使用protoc.exe生成message文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 输入输出头文件_引入的标准头文
- 下一篇: 如何发布php网站_php网站如何发布【