【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

react的useState源码分析

flyzz177

React

令人头秃的js隐式转换面试题,你能做对吗

loveX001

JavaScript

天翼云电脑为医共体建设加buff!

天翼云开发者社区

从recat源码角度看setState流程

flyzz177

React

从输入URL到渲染的过程中到底发生了什么?

loveX001

JavaScript

百度前端二面常考面试题

loveX001

JavaScript

公司CTO:高性能开发,你不会Netty,怎么好意思拿20K?

钟奕礼

Java 程序员 java面试 java编程

StoneDB 首席架构师李浩:如何选择一款 HTAP 产品?

StoneDB

MySQL HTAP 数据库· StoneDB 12 月 PK 榜

腾讯云与流媒体服务商BeLive达成合作,助力提升东南亚与周边地区直播水平

科技热闻

React-Hooks源码深度解读

goClient1992

React

看透react源码之感受react的进化

goClient1992

React

技术分享| anyRTC音视频与微信小程序互通实践

anyRTC开发者

小程序 音视频 WebRTC RTMP 视频格式转换

Node.js 基于区块链的游戏应用的首选

devpoint

JavaScript node.js 区块链 12月月更

老板答应了我,只要回答对几道简单的Spring问题,就给我涨3K

钟奕礼

Java 程序员 java面试 java编程

民办二本程序员阿里、百度、平安等五厂面经,5份offer(含真题)

钟奕礼

Java 程序员 java面试 java编程

拼多多电商部java岗三面落选,记下的面试题,不睡觉都要背下来!

钟奕礼

Java 程序员 java面试 java编程

干货 | 如何快速实现BitSail Connector?

字节跳动数据平台

开源 数据引擎 12 月 PK 榜

从react源码看hooks的原理

flyzz177

React

VoneBaaS荣获第二届中国可信区块链安全攻防大赛优秀案例奖

旺链科技

区块链 产业区块链 VoneBaaS 12 月 PK 榜

天天预约 | 2022年11月产品更新

天天预约

小程序 SaaS 软件系统 产品分析 预约工具

不让Bug陪你过年,StarRocks年终抓虫派对重金相邀!

StarRocks

#数据库

低代码平台,企业业务创新的最佳路径

元年技术洞察

低代码 数字化转型 #方舟平台

深度分析React源码中的合成事件

goClient1992

React

模块一作业

陈实

「架构实战营」

双机双工是什么意思?与双机热备有什么区别?

行云管家

双机热备 双机双工

Java程序员:为了跳槽刷完1000道真题,没想到老板直接给我升职了

钟奕礼

Java 程序员 java面试 java编程

工作中常用的设计模式--适配器模式

lpe234

后端 设计模式 适配器模式 spring-boot

聚焦稳定性,Dubbo 发版规划公布

Apache Dubbo

Java 开源 微服务 云原生 dubbo

CleanMyMac X2023永久版下载教程及使用许可证

茶色酒

CleanMyMac X CleanMyMac X2023

北京等保备案预约平台是哪个?多久能办好?

行云管家

等保 等保测评 等保备案 北京

数字先锋| 农业农村部大数据公共平台基座上线,天翼云擎起乡村振兴新希望!

天翼云开发者社区

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