프로토콜 버퍼 규칙

<ph type="x-smartling-placeholder"></ph> 문제 신고 소스 보기 1박 · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

규칙

proto_lang_toolchain

규칙 소스 보기
proto_lang_toolchain(name, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, mnemonic, output_files, plugin, plugin_format_flag, progress_message, proto_compiler, restricted_to, runtime, tags, target_compatible_with, testonly, visibility)

Bazel을 사용하는 경우 에서 규칙을 로드하세요. https://github.com/bazelbuild/rules_proto.

googleapis_proto_library 규칙 (예: java_proto_library)가 proto-compiler에 의해 결정됩니다. 일부 LANG_proto_library 규칙에서는 명령줄 플래그를 사용하여 사용할 툴체인을 지정할 수 있습니다. 해당 문서를 참조하세요.

일반적으로 이러한 종류의 규칙은 Java 컴파일러를 조정해야 합니다

컴파일러는 없습니다. proto-compiler는 연결하는 proto_library 규칙에서 가져옵니다. 그것은 명령줄 플래그로 Blaze에 전달됩니다. 여러 기능을 사용하려면 proto_library 규칙 자체에서 proto 컴파일러를 호출해야 합니다. googleapis_proto_library가 사용하는 컴파일러를 것과 동일한 컴파일러를 적용하는 것이 좋습니다. proto_library는 사용합니다.

간단한 예는 다음과 같습니다.

proto_lang_toolchain(
    name = "javalite_toolchain",
    command_line = "--javalite_out=shared,immutable:$(OUT)",
    plugin = ":javalite_plugin",
    runtime = ":protobuf_lite",
)

인수

속성
name

이름 필수

이 대상의 고유한 이름입니다.

blacklisted_protos

라벨 목록 기본값은 []입니다.

srcs 속성에 있는 파일에는 코드가 생성되지 않습니다. blacklisted_protos입니다. 다음과 같이 proto 런타임에 이미 연결된 .proto 파일에 사용됩니다. any.proto
command_line

String; 필수

이 값은 proto-compiler로 전달되어 코드를 생성합니다. 일부분만 포함 이 코드 생성기/플러그인에만 해당 (예: -I 매개변수 포함 안 함)
  • $(OUT)는 Lang_proto_library 전용입니다. 규칙은 이 변수를 해석하는 방법을 배우게 됩니다. 예를 들어 Java의 경우 $(OUT)가 만들 src-jar 파일 이름을 지정합니다.
mnemonic

String; 기본값은 "GenProto"입니다.

이 값은 protoc 작업의 니모닉으로 설정됩니다.
output_files

String; 기본값은 "legacy"입니다.

다음 중 하나로 command_line$(OUT) 형식을 지정하는 방법을 제어합니다. 파일이 여러 개인 경우 단일 파일 또는 출력 디렉터리의 경로 가능한 값은 'single', 'multiple'입니다.
plugin

라벨 기본값은 None입니다.

제공되는 경우 proto-compiler를 호출하는 작업에서 사용할 수 있으며 proto-compiler에 전달됩니다. --plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

String; 기본값은 ""입니다.

이 값이 제공되는 경우 proto-compiler로 전달되어 플러그인을 사용할 수 있습니다. 값은 플러그인 실행 파일로 대체되는 단일 %s를 포함합니다. --plugin=protoc-gen-PLUGIN=<executable>.
progress_message

String; 기본값은 "Generating proto_library %{label}"입니다.

이 값은 protoc 작업에 대한 진행 메시지로 설정됩니다.
proto_compiler

라벨 기본값은 None입니다.

proto 컴파일러 실행 파일입니다. 제공되는 경우 이 타겟은 코드를 생성하기 위한 proto 컴파일러로 사용됩니다.
runtime

라벨 기본값은 None입니다.

생성된 코드가 컴파일되는 언어별 라이브러리입니다. 정확한 동작은 Bundle_proto_library마다 다릅니다. 예를 들어 Java는 런타임에 대해 컴파일되어야 합니다.

proto_library

규칙 소스 보기
proto_library(name, deps, srcs, data, allow_exports, 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)

지원 중단되었습니다. 을(를) 사용하세요. https://github.com/bazelbuild/rules_proto를 대신 입력합니다.

proto_library를 사용하여 프로토콜 버퍼 라이브러리 정의 여러 언어에서 사용할 수 있습니다. proto_library가 나열될 수 있음 지원되는 규칙의 deps 절(예: java_proto_library)

명령줄에서 컴파일하면 proto_libraryfoo-descriptor-set.proto.bin: 메시지를 보냅니다. 파일은 직렬화된 FileDescriptorSet입니다. 설명 https://developers.google.com/protocol-buffers/docs/techniques#self-description.

개발자가 직접 언급한 .proto 파일에 관한 정보만 포함되어 있습니다. proto_library 규칙; 전이 설명어 집합의 수집은 [ProtoInfo].transitive_descriptor_sets Starlark 제공업체 ProtoInfo.java 문서를 참고하세요.

권장 코드 구성:

  • .proto 파일당 proto_library 규칙 1개
  • 이름이 foo.proto인 파일은 foo_proto이라는 규칙에 포함됩니다. 는 동일한 패키지에 있습니다.
  • 이름이 지정된 proto_library를 래핑하는 [language]_proto_library foo_proto를 호출해야 함 foo_[language]_proto)하고 동일한 패키지에 있어야 합니다.

인수

속성
name

이름 필수

이 대상의 고유한 이름입니다.

deps

라벨 목록 기본값은 []입니다.

타겟이 사용하는 다른 proto_library 규칙의 목록입니다. proto_library는 다른 서버에만 종속될 수 있고 타겟 proto_library개 언어별 라이브러리에 종속되지 않을 수 있습니다.
srcs

라벨 목록 기본값은 []입니다.

다음 .proto.protodevel 파일의 목록은 타겟 생성에 사용됩니다 일반적으로 비어 있지 않은 목록입니다. 단일 사용 사례 여기서 srcs는 비워 둘 수 있는 alias-library입니다. 이것은 proto_library 규칙에 deps에 다른 proto_library가 하나 이상 있습니다. 이 패턴은 예를 들어 공개 API를 영구 이름으로 내보냅니다
allow_exports

라벨 기본값은 None입니다.

proto 라이브러리가 다시 내보내지거나 사용되지 않도록 하는 선택적 허용 목록 lang_proto_library를 사용해야 합니다.
exports

라벨 목록 기본값은 []입니다.

'공개 가져오기'를 통해 참조할 수 있는 proto_library 대상의 목록 proto에서 있습니다.
import_prefix

String; 기본값은 ""입니다.

이 규칙의 .proto 파일 경로에 추가할 프리픽스입니다.

설정되면 이 규칙의 srcs 속성에 있는 .proto 소스 파일은 다음과 같습니다. access at은 저장소 기준 경로 앞에 추가된 이 속성의 값입니다.

strip_import_prefix 속성의 접두사는 이 속성을 사용하기 전에 삭제됩니다. 가 추가됩니다.

strip_import_prefix

String; 기본값은 ""입니다.

이 규칙의 .proto 파일 경로에서 제거할 프리픽스입니다.

설정되면 이 규칙의 srcs 속성에 있는 .proto 소스 파일은 이 접두사를 잘라내어 해당 경로에서 액세스할 수 있습니다.

슬래시로 시작하지 않는 상대 경로인 경우 패키지 상대 경로로 간주됩니다. 있습니다 절대 경로인 경우 저장소 상대 경로로 간주됩니다.

import_prefix 속성의 접두사는 이 접두사가 합니다.