Bazel 具有快速、正确和可扩展的特点 带有集成测试的构建工具,可支持多种 语言、代码库和 平台,打造行业领先的生态系统。
Bazel 速度快
Bazel 非常清楚每个构建命令需要哪些输入文件, 只在这组输入文件包含 都会发生变化 它会尽可能以并行方式运行构建命令,无论是在 在同一台计算机上或在远程构建节点上运行。如果 build 的结构 可以同时运行数千个构建或测试命令。
内存、磁盘和 远程构建农场(如果有)。在 Google,我们经常会实现缓存命中率 位于 99%以内
Bazel 正确
Bazel 可确保您的二进制文件仅基于您自己的代码构建 源代码。Bazel 操作在各个沙盒和 Bazel 轨道中运行 每个 build 的输入文件,仅且始终重新运行 build 命令。这可以确保二进制文件保持最新状态, 相同的源代码始终会生成相同的二进制文件, 。
向无数的 make clean
调用和追逐幽灵 bug 打招呼
它们实际上已在从未构建的源代码中解决。
Bazel 可扩展
通过自行编写规则和宏来充分利用 Bazel 的强大功能 您可以根据自己在各类项目中的具体需求来自定义 Bazel。
Bazel 规则是用我们的 Starlark 编写的 是 Python 的子集。Starlark 是 让大部分开发者都能轻松编写规则 并在整个生态系统中使用
集成测试
Bazel 的集成测试运行程序 通过远程执行只知道并运行需要重新运行的测试 (如果有)并行运行这些任务。使用遥控器尽早检测薄片 快速运行测试数千次。
Bazel 提供了将测试结果上传到中央设备的工具 从而促进测试结果的高效沟通 或由个人开发者发布
多语言支持
Bazel 支持许多常见的编程语言,包括 C++、Java Kotlin、Python、Go 和 Rust。您可以构建多个二进制文件(例如, 后端、网页界面和移动应用)。 受限于一种语言的惯用构建工具。
多代码库支持
Bazel 可以从多个位置收集源代码:您可以 不需要提供依赖项(但您可以!),也可以指向 将 Bazel 复制到源代码或预构建工件(例如 git 代码库)的位置 代码库或 Maven Central),剩下的工作将由其自行处理。
多平台支持
Bazel 可以同时针对多个平台构建项目,这些平台包括 Linux、 macOS、Windows 和 Android。它还提供强大的 交叉编译功能为代码构建 同时在另一个平台上运行此 build。
庞大的生态系统
行业领导者喜欢使用 Bazel 构建 这是由使用 Bazel 和 Bazel 做出贡献的开发者组成的社区。查找工具、服务 和文档,包括咨询和 SaaS 产品 Bazel 可以使用的探索各种扩展程序,例如对编程语言的支持, 我们的开源软件代码库