我使用protobuf-gradle插件从proto文件生成java类。
我的原始文件看起来像
syntax = "proto3";
package com.address;
option java_package = "com.address";
message AddressesMessage {
int32 id = 1;
string address_line_1 = 4;
string address_line_2 = 5;
string city = 7;
string postal_code = 9;
string country = 10;
}
插件正在为我生成类,但现在我想在字段级别添加一些元数据信息。像
syntax = "proto3";
package com.address;
option java_package = "com.address";
message AddressesMessage {
int32 id = 1 [ (meta) = { isfact: false }];
string address_line_1 = 4;
string address_line_2 = 5;
string city = 7;
string postal_code = 9;
string country = 10;
}
这可能吗?
是的,这可以通过自定义选项实现,但是:您需要在一个单独的proto2模式中定义您的自定义选项,然后由proto3模式导入。
类似于(对于您的proto2模式,未经测试(:
syntax = "proto2";
import "google/protobuf/descriptor.proto";
package MetaPackage;
message MyMeta {
optional bool isFact = 1;
}
extend google.protobuf.FieldOptions {
optional MyMeta meta = 80412; // numbering: search for "One last thing" in the link above
}
然后添加:
import "MyMeta.proto";
到您的proto3模式,它应该工作。不过,访问元数据是另一个主题!请参阅上面的链接。