2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Google 开源构建工具 Bazel

  • 2015-03-27
  • 本文字数:917 字

    阅读完需:约 3 分钟

Google 日前开源了他们内部使用的构建工具 Bazel

Bazel 是一个类似于 Make 的工具,是 Google 为其内部软件开发的特点量身定制的工具,如今 Google 使用它来构建内部大多数的软件。它的功能有诸多亮点:

  • 多语言支持:目前 Bazel 默认支持 Java、Objective-C 和 C++,但可以被扩展到其他任何变成语言。
  • 高级构建描述语言:项目是使用一种叫 BUILD 的语言来描述的,它是一种简洁的文本语言,它把一个项目视为一个集合,这个集合由一些互相关联的库、二进制文件和测试用例组成。相反,像 Make 这样的工具,需要去描述每个文件如何调用编译器。
  • 多平台支持:同一套工具和相同的 BUILD 文件可以用来为不同的体系结构构建软件,甚至是不同的平台。在 Google,Bazel 被同时用在数据中心系统中的服务器应用和手机端的移动应用上。
  • 可重复性:在 BUILD 文件中,每个库、测试用例和二进制文件都需要明确指定它们的依赖关系。当一个源码文件被修改时,Bazel 凭这些依赖来判断哪些部分需要重新构建,以及哪些任务可以并行进行。这意味着所有构建都是增量的,并且相同构建总是产生一样的结果。
  • 可伸缩性:Bazel 可以处理大型项目;在 Google,一个服务器软件有十万行代码是很常见的,在什么都不改的前提下重新构建这样一个项目,大概只需要 200 毫秒。

对于为什么要重新发明一个构建工具而不直接使用 Make,Google 认为 Make 控制得太细,最终的结果完全依靠开发人员能正确编写规则。很久以前,Google 使用自动生成的臃肿的 Makefile 来构建他们的软件,速度太慢,结果不可靠,最终影响了研发人员的效率和公司的敏捷性。所以他们做了 Bazel。Bazel 的规则层次更高,比如,对于“Java 测试”、“C++ 二进制文件”,它都有定义好的内建规则,而这些规则都已经被无数的测试证明是正确和稳定的。

另外,Bazel 也有扩展机制,通过这种机制,开发者可以自己添加其他各种语言的构建规则,比如 Python

Bazel 的代码目前已经托管在GitHub 上,感兴趣的读者也可以通过Bazel 的主页了解更多信息。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-27 00:5921760
用户头像

发布了 77 篇内容, 共 38.5 次阅读, 收获喜欢 26 次。

关注

评论

发布
暂无评论
发现更多内容

Python从0到1丨带你了解图像直方图理论知识和绘制实现

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 企业号 5 月 PK 榜

8张图带你全面了解kafka的核心机制

Java kafka 消息队列 消息中间件

第二届全国博士后创新创业大赛报名开始啦!海内外博士、博士后

科兴未来News

博士后 双创比赛 博士

ChatGPT人功智能开发方案详情

Congge420

性能测试的时机

陈磊@Criss

8张图带你全面了解kafka的核心机制

JAVA旭阳

Java kafka

免费堡垒机有哪些?功能多吗?后续可以升级吗?

行云管家

安全运维 免费软件 免费 免费堡垒机

flutter系列之:使用AnimationController来控制动画效果

程序那些事

flutter 大前端 程序那些事

华为首席架构师推荐的《云原生架构下微服务最佳》

Java 架构 微服务 云原生

众筹互助软件架构搭建原理

Congge420

美团二面:聊聊ConcurrentHashMap的存储流程

Java hashmap ConcurrentHashMap

京东顶级架构师是如何应对几天后618狂欢节的,带你走进顶级大佬

Java 架构 系统设计 高并发 亿级流量

索信达助力,贵阳银行荣获“金融行业数字化转型最佳创新应用奖”

索信达控股

数字化转型 金融 银行

led显示屏安装步骤和注意点

Dylan

调试 安装 LED显示屏

提高数据的安全性和可控性,数栈基于 Ranger 实现的 Spark SQL 权限控制实践之路

袋鼠云数栈

数据安全

楠姐技术漫话:图计算的那些事 | 京东云技术团队

京东科技开发者

京东云 图计算 企业号 5 月 PK 榜

GPT大语言模型Alpaca-lora本地化部署实践【大语言模型实践一】 | 京东云技术团队

京东科技开发者

gpu 京东云 ChatGPT 企业号 5 月 PK 榜

高效研发团队都在看!一套方法论带你找到适合自己的效能提升路径

万事ONES

TSBS 报告-TimescaleDB vs TDengine

TDengine

时序数据库 tsdb #TDengine

AntDB亮相DDIS 2023数字驱动创新峰会,共推数字经济创新力量

亚信AntDB数据库

AntDB AntDB数据库 企业号 5 月 PK 榜

华为与阿里等五位架构师一起奋战七个月,写出这一份Java并发编程

Java 并发编程 多线程 并发实现

技术驱动,数据赋能,华为云GaussDB给世界一个更优选择

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

OpenMLDB v0.8.0 发布

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

全球护照NFC核验 | 羽山科技

羽山数据

nfc 护照 全球护照

百度Q1财报发布:文心一言性能提升10倍,大语言模型带来革命性潜力

飞桨PaddlePaddle

飞桨

未来源码|Dart 3正式发布:100%健全的空值安全、迄今为止最大版本

MobTech袤博科技

IDD Swap算力LP挖矿部署流程(详细

Congge420

基于数字孪生的智慧校园解决方案,数字孪生赋能创建安全、绿色、智能的数字校园|UINO优锘数字孪生解决方案

ThingJS数字孪生引擎

智慧校园 数字孪生 智慧校园解决方案 智慧校园管理系统 可视化引擎

Java中的正则表达式详解

timerring

Java

2023年辽宁省等级保护测评机构名单公布

行云管家

等保 等级保护 辽宁

Google开源构建工具Bazel_语言 & 开发_曹知渊_InfoQ精选文章