写点什么

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:5921605
用户头像

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

关注

评论

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

接口管理工具ApiPost使用——(响应结果可视化)

Proud lion

大前端 后端 Postman 开发工具 接口文档

SQL 是产品经理必会技能

蒋川

数据库 sql 产品 后端

带你入门antv.g6流程图

华为云开发者联盟

可视化 流程图 API graph 图可视化引擎

面对不同的业务场景,选择零码还是低码?

华为云开发者联盟

开发者 低代码 零代码 AppCube 业务场景

遗留系统演进

Kubernetes 微服务 etcd 架构设计原则 演进式架构

合约量化系统开发(炒币合约/机器人炒币App)

获客I3O6O643Z97

智能合约 量化机器人 合约量化

云小课 | 区块链关键技术之一:共识算法

华为云开发者联盟

区块链 区块链技术 共识机制 共识算法

MySQL基于GTID复制实现的工作原理

Java MySQL 数据库 面试 后端

6年Java经验,4面阿里定级P7,多亏阿里13万字+脑图+源码面试笔记

Java~~~

Java spring 架构 面试 高并发

数字货币交易所自动刷量机器人介绍|开发交易所去中心化量化机器人

Geek_23f0c3

市值管理机器人系统开发 自动刷量机器人 炒币机器人

48W字?GitHub上下载量破百万的阿里:图解Java、网络、算法笔记

Java~~~

Java 架构 面试 算法 JVM

拍乐云Pano 两周年啦!砥砺前行,踏浪潮头,做全行业的实时音视频专家

拍乐云Pano

WebRTC RTC

制作第三方库时,我们的资源到底在哪?

fuyoufang

ios swift 8月日更

阿里资深专家整理的Redis5设计与源码分析宝典终于横空出世

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

数字货币交易所自动刷量机器人介绍|开发交易所去中心化量化机器人

量化系统19942438797

游戏“外挂”?—— AI生成游戏最强攻略

华为云开发者联盟

AI 游戏 华为云

开源demo | 快速搭建在线自习室场景

anyRTC开发者

音视频 在线教育 视频直播 在线自习室

牛掰!阿里大佬刷了四年LeetCode才总结出来的数据结构和算法手册

Java~~~

Java 架构 面试 算法 数据结构与算法

10年IT老兵亲述SpringCloud开发从入门到实战文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

什么样的架构师修炼之道文档,能帮助大家修炼成为出色的架构师?

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Ubuntu Server 20.04 搭建Nacos集群

玏佾

nacos 部署 搭建

如何高效工作,享受品质生活?看看少数派的经验总结吧

博文视点Broadview

阿里资深专家分享程序员三门课:技术精进架构修炼、管理探秘文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

IT运维审计系统是什么?有推荐的吗?

行云管家

云计算 堡垒机 IT运维 数据审计 运维审计

华为海外女科学家为您揭秘:GaussDB(for MySQL)云栈垂直集成的力量有多大?

华为云数据库小助手

华为云 GaussDB GaussDB(for MySQL)

sql task4 集合运算

橙橙橙橙汁丶

三个月学完阿里数位架构师总结的281页架构宝典PDF终入蚂蚁

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

如何用3分钟搭建一个属于自己的网站?

百度开发者中心

最佳实践 开发者 方法论

一起来养猪APP开发

游戏开发_软件开发

小程序云开发 游戏开发 2D APP开发 3D

mock.js的作用

与风逐梦

大前端 后端 Mock

java布道者耗尽20年的功力整理完结java实战第2版文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

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