【Protobuff(一)】proto文件的幾個參數的含義

1.package:

定義message的包名。包名的含義與平臺語言無關,這個package僅僅被用在proto文件中用於區分同名的message類型。可以理解爲message全名的前綴,和message名合起來唯一標識一個message類型。比如com.user.User與com.company.User就是兩個message類型。在proto文件中import時,如果有重名的message,可以加上包名做區分。所以包名是用來唯一標識message的;

這個包名與proto文件所在的路徑沒有關係,包名爲com.user,不代表必須在com/user目錄下;

當然不能說與平臺語言完全沒有關係,因爲默認情況下,由proto編譯爲某一種平臺的語言時,會將packge轉爲對應語言內的元素,比如c++是命名空間,java是包名(如果沒有額外指定java_package);

grpc使用包名定義完整的服務路徑;

2.proto文件本身的路徑:

該路徑會影響proto文件import其他文件。比如a.proto在com/user目錄下,那麼其他proto想要import該文件時,需要import "com/user/a.proto"。也就是說import關鍵字後面的路徑是被import的proto文件的路徑,與package沒有任何關係!

3.java_package:

該字段是option的,用於標識生成的java文件的package。如果沒有指定,則使用proto裏定義的package,如果package也沒有指定,那就會生成在根目錄下;

4.java_outer_classname:

該字段是option的,用於指定proto文件生成的java類的outerclass類名。什麼是outerclass?簡單來說就是用一個class文件來定義所有的message對應的java類。這個class就是outerclass;如果沒有指定,默認是proto文件的駝峯式;

5.java_multiple_files:

該字段是option的,如果是true,那麼每一個message文件都會有一個單獨的class文件;否則,message全部定義在outerclass文件裏。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章