于 2024 年 10 月 1 日宣布的变更
于 2024 年 10 月 1 日宣布的 Protocol Buffers 变更。
Bazel 和 Proto 规则
Bazel 用于 protobuf 构建的方式即将发生变更。这些变更要求项目所有者在第一阶段知晓,并在第二阶段之前采取行动。
第一阶段
随着 Bazel 8 的发布,proto 规则(proto_library、cc_proto_library、java_proto_library、java_lite_proto_library 和 py_proto_library)将从 Bazel 项目中移除。它们将被添加到 Protocol Buffers 项目的 v29 版本中。Bazel 将更新为自动使用 protobuf 项目中的规则,因此这一变更最初对项目所有者来说是无需任何操作的。
在 Bazel 8 发布之后、Bazel 9 发布之前,用户需要从 Protocol Buffers 项目仓库中显式地 load(加载)这些规则。规则的自动使用只是为了支持迁移而采取的临时措施。
用户应在使用这些 proto 规则的任何 BUILD 或 .bzl 文件中添加以下 load() 语句。请注意,这需要 Protobuf v29.0 或更高版本。
load("@protobuf//bazel:proto_library.bzl", "proto_library")
load("@protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
load("@protobuf//bazel:java_proto_library.bzl", "java_proto_library")
load("@protobuf//bazel:java_lite_proto_library.bzl", "java_lite_proto_library")
load("@protobuf//bazel:py_proto_library.bzl", "py_proto_library")
第二阶段
当 Bazel 9 发布时,自动加载 protobuf 库规则的功能将被移除。届时,您将需要在 Bazel 构建文件中包含 load 语句。
最终目标
一旦规则迁移到 protobuf 仓库中,我们计划处理常见的用户请求,例如在可能的情况下为 proto 编译器使用预构建版本。