Bazel 是一个类似于 Make、Maven 和 Gradle 的开源构建和测试工具。 它使用人类可读的高级 build 语言。Bazel 支持 并针对多个平台构建输出。Bazel 支持 多个代码库和大量用户的大型代码库。
优势
Bazel 具有以下优势:
高级 build 语言。Bazel 使用直观易懂的 用于描述项目的构建属性 语义级别。与其他工具不同,Bazel 基于概念 库、二进制文件、脚本和数据集,保护您免受 编写单个调用所需的复杂程度,例如编译器和 链接程序。
Bazel 既快速又可靠。Bazel 会缓存之前完成的所有工作 会跟踪文件内容和构建命令的更改。这样,Bazel 知道何时需要重新构建,并仅进行重建。要进一步 您可以快速设置项目,以便在高度云环境中 并行和增量方式。
Bazel 是多平台的。Bazel 可在 Linux、macOS 和 Windows 上运行。Bazel 可以为多个平台(包括 桌面设备、服务器和移动设备。
Bazel 扩缩能力。Bazel 在处理超过 10 万项的构建时,能够保持敏捷性 源文件。它适用于多个代码库和数十个用户群 成千上万个。
Bazel 具有可扩展性。许多语言 而您可以扩展 Bazel 来支持 框架。
使用 Bazel
要使用 Bazel 构建或测试项目,您通常需要执行以下操作:
设置 Bazel。下载并安装 Bazel。
设置项目工作区, Bazel 在其中查找 build 输入和
BUILD
文件的目录,以及 存储构建输出。编写一个
BUILD
文件,告诉 Bazel 要构建的内容以及如何构建 构建容器。如需编写
BUILD
文件,请使用以下代码声明构建目标: Starlark,一种网域特有的语言。(参见示例 此处)。构建目标指定 Bazel 将构建的一组输入制品 其依赖项、Bazel 进行构建时使用的构建规则,以及选项 配置构建规则的应用
构建规则指定 Bazel 将使用的构建工具,如编译器和 链接器及其配置Bazel 附带了许多构建规则 涵盖 Google Cloud 上受支持的语言中最常见的工件类型 支持的平台
通过命令行运行 Bazel。Bazel 将输出放置在工作区中。
除了构建应用之外,你还可以使用 Bazel 运行 测试和查询 build 来跟踪代码中的依赖项
Bazel 构建流程
在运行构建或测试时,Bazel 会执行以下操作:
加载与目标相关的
BUILD
文件。分析输入及其 dependencies,应用指定的 build 并生成一个操作, 图表。
对输入执行构建操作,直到最终构建输出 。
由于之前的所有构建工作都已缓存,因此 Bazel 可以识别和重复使用已缓存的 并且仅重新构建或重新测试更改的内容。为了进一步强制执行 你可以设置 Bazel 来运行构建和测试 封闭沙盒,最大限度地减少偏差 并最大限度地提高可重现性。
操作图
这个操作图显示了构建工件、它们之间的关系 以及 Bazel 将要执行的构建操作有了这个图表,Bazel track 是 文件内容以及对操作(例如 build 或 test 命令)的更改,以及 了解之前已经完成的构建工作。通过该图表,您还可以 轻松在代码中跟踪依赖项。
入门教程
要开始使用 Bazel,请参阅使用入门或跳转到 直接转到 Bazel 教程: