分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

bazelbuild/bazel

开发工具

一个多语言构建与测试系统,只重建有变化的部分,从小项目扩展到 monorepo。

26,017
4,669
Java
Apache-2.0
创建于 12 年前

Bazel 是一个面向任意规模软件的构建与测试系统,适合需要快速增量构建、并用同一套工具覆盖多语言与多仓库的团队。它的口号是 "{Fast, Correct} - Choose two":在不牺牲正确性的前提下避免多余的工作。

实际工作流中有什么变化

你声明目标和它们之间的依赖关系,Bazel 再算出真正需要重新构建的部分。README 把速度归功于本地与分布式缓存、优化的依赖分析和并行执行,并强调只重做必要的工作。实际效果是:改动大型代码库或 monorepo 的一小部分,不会触发全量重建。

同一个工具在 Windows、macOS 和 Linux 上处理 Java、C++、Android、iOS、Go 及其他语言平台。构建和测试都在一套框架里表达,因此 CI 中的一条命令可以覆盖多种语言,而不必为每种语言拼接不同的构建脚本。Bazel 能处理多个仓库或一个巨大的 monorepo,README 将其定位为可随组织代码库和持续集成一起扩展。

扩展方式

Bazel 在设计上支持扩展:可以用它的扩展语言为新语言和平台添加支持,并复用社区发布的规则。文档对规则、扩展 Bazel、query 命令和测试都有较深入的说明。这一点很重要,因为核心之外的语言支持往往来自社区规则集,而不是主工具本身。

要求与注意事项

README 除操作系统列表外,没有给出版本要求或平台限制。安装和第一个项目见官方安装与入门指南,另有 C++、Java、Android 和 iOS 教程。

最与决策相关的注意点来自 README 之外。在 2019 年围绕 1.0 发布的讨论中,一位评论者称当时 Bazel 生态尚不成熟,频繁破坏向后兼容,规则作者要不停跟进;同一帖中一位规则集维护者则表示升级过程虽然忙但可控 生态方面的担忧,维护者的经验。这些是针对旧版本的有日期观点,不代表当前评测,但提示了依赖第三方规则的成本,以及采用时应关注升级说明。

安全问题通过邮件报告,官方声明三个工作日内回复,并采用 90 天披露时限。项目使用 Apache-2.0 许可。

本文由 AI 根据项目 README 生成,更新于 2026年10月30日,以项目官方文档为准。

Hacker News 讨论

Bazel Release 1.0
▲ 263 · 174 条评论 · 2019年10月10日
Bazel 8.0
▲ 137 · 46 条评论 · 2024年12月9日
Why Bazel is written in Java
▲ 15 · 0 条评论 · 2021年12月14日