Quy tắc
chuỗi công cụ proto_lang_tool
Xem nguồn quy tắcproto_lang_toolchain(name, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, mnemonic, plugin, plugin_format_flag, progress_message, proto_compiler, restricted_to, runtime, tags, target_compatible_with, testonly, visibility)
Nếu bạn dùng Bazel, vui lòng tải quy tắc này tại https://github.com/bazelbuild/rules_proto.
Chỉ định cách quy tắc xls_proto_library (ví dụ: java_proto_library
) sẽ gọi trình biên dịch proto.
Một số quy tắc xls_proto_library cho phép bạn chỉ định chuỗi công cụ nào để sử dụng cờ dòng lệnh; hãy tham khảo tài liệu của các chuỗi đó.
Thông thường, bạn không nên viết loại quy tắc đó trừ khi bạn muốn điều chỉnh trình biên dịch Java của mình.
Không có trình biên dịch nào. Trình biên dịch proto được lấy từ quy tắc proto_library mà chúng tôi đính kèm. Nó được chuyển dưới dạng cờ dòng lệnh tới Blaze.
Một số tính năng yêu cầu trình biên dịch proto được gọi trên chính quy tắc proto_library.
Việc thực thi trình biên dịch mà xls_proto_library sử dụng cũng giống như lợi ích của trình biên dịch proto_library
.
Ví dụ
Một ví dụ đơn giản là:
proto_lang_toolchain( name = "javalite_toolchain", command_line = "--javalite_out=shared,immutable:$(OUT)", plugin = ":javalite_plugin", runtime = ":protobuf_lite", )
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
blacklisted_protos
|
srcs của blacklisted_protos .
Thuộc tính này được dùng cho các tệp .proto đã liên kết với thời gian chạy proto, chẳng hạn như
any.proto .
|
command_line
|
|
mnemonic
|
|
plugin
|
--plugin=protoc-gen-PLUGIN=
|
plugin_format_flag
|
--plugin=protoc-gen-PLUGIN=
|
progress_message
|
|
proto_compiler
|
|
runtime
|
|
thư viện proto
Xem nguồn quy tắcproto_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, import_prefix, licenses, restricted_to, strip_import_prefix, tags, target_compatible_with, testonly, visibility)
Không dùng nữa. Thay vào đó, vui lòng sử dụng https://github.com/bazelbuild/rules_proto.
Sử dụng proto_library
để xác định các thư viện của vùng đệm giao thức có thể dùng từ nhiều ngôn ngữ. proto_library
có thể được liệt kê
trong mệnh đề deps
của các quy tắc được hỗ trợ, chẳng hạn như java_proto_library
.
Khi được biên dịch trên dòng lệnh, proto_library
sẽ tạo một tệp có tên là
foo-descriptor-set.proto.bin
. Đây là tệp mô tả được thiết lập cho
các thông báo mà quy tắc này đưa vào. Tệp là một FileDescriptorSet
tuần tự, được mô tả trong https://developers.google.com/protocol-buffers/docs/techniques#self-description.
Tệp này chỉ chứa thông tin về các tệp .proto
được đề cập trực tiếp bởi quy tắc proto_library
; tập hợp các bộ mô tả bắc cầu có sẵn thông qua
nhà cung cấp Starlark [ProtoInfo].transitive_descriptor_sets
.
Xem tài liệu trong ProtoInfo.java
.
Cách tổ chức mã đề xuất:
- Một quy tắc
proto_library
cho mỗi tệp.proto
. - Tệp có tên
foo.proto
sẽ nằm trong quy tắc tên làfoo_proto
, nằm trong cùng một gói. -
[language]_proto_library
bao bọc mộtproto_library
có tên làfoo_proto
phải được gọi làfoo_[language]_proto
và nằm trong cùng một gói.
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
deps
|
proto_library khác mà mục tiêu phụ thuộc vào.
proto_library chỉ có thể phụ thuộc vào các mục tiêu
proto_library khác.
Thư viện này có thể không phụ thuộc vào các thư viện dành riêng cho ngôn ngữ.
|
srcs
|
.proto và .protodevel được xử lý để tạo mục tiêu. Đây thường là một danh sách không trống. Một trường hợp sử dụng mà trong đó srcs có thể trống là alias-library. Đây là quy tắc proto_library có một hoặc nhiều proto_library khác trong deps .
Bạn có thể dùng mẫu này để xuất api công khai dưới tên cố định.
|
exports
|
|
import_prefix
|
Khi được đặt, các tệp nguồn .proto trong thuộc tính Tiền tố trong thuộc tính |
strip_import_prefix
|
Khi bạn đặt, các tệp nguồn .proto trong thuộc tính Nếu đó là một đường dẫn tương đối (không bắt đầu bằng dấu gạch chéo), thì đường dẫn đó sẽ được gọi là đường dẫn tương đối theo gói. Nếu đây là một đường dẫn tuyệt đối, thì đường dẫn này được hiểu là đường dẫn tương đối đến kho lưu trữ. Tiền tố trong thuộc tính |