老卫带你学---Bazel学习笔记(一)

本文介绍了Bazel,一个支持多语言、多平台的高级构建和测试工具,它通过Starlark语言简化项目构建,提供缓存和依赖管理,适用于大型企业项目和构建效率提升。
摘要由CSDN通过智能技术生成

今天来开始学习Bazel这个工具,其实在Google等大公司都会推崇Bazel来作为自己项目构建以及测试的标准工具(标准玩法就是Monorepo+bazel+主干开发)

Bazel是什么

Bazel 是一个类似于 Make、Maven的开源构建和测试工具,支持多种语言多个平台构建输出。

优势:

  • 高级构建语言:采用高语义来描述项目构建属性,和其他工具不同,Bazel是对
    library、script、binary以及dataset进行操作,这样就不用去理解编译器/链接器的工具的复杂性
  • 快速可靠:Bazel会缓存之前已经做的工作,并且会跟踪代码内容和构建命令的修改。这样的好处就可以并行构建/增量构建
  • 多平台:支持mac/linux/windows
  • 多语言:支持任何语言
  • 多仓库:git、maven

Bazel使用

  • 下载安装:https://bazel.google.cn/install
  • 设置项目工作区:bazel构建输入以及构建输出的目录
  • 编写bazel文件,声明式告诉bazel构建什么/怎么构建,采用Starlark语言来编写文件(一种python的子集),描述input artifacts、dependency、build rules(构建工具和配置)
  • 运行bazel,生成的交付物会保留在工作区

Bazel构建过程

  • 加载build与目标相关的文件
  • 分析输入以及依赖关系,生成action graph
  • 开始构建

这里所有之前被构建的工作都会被缓存下来,bazel可以识别并重用它们,从而可以进行快速的增量构建/增量测试

为什么需要一个构建系统build system

  • 项目多语言:如果一个项目内有多个语言项目,那构建工作就不是一步可以完成,就需要一个系统自动化完成构建
  • 如果发生灾难:即使恢复已有的数据,代码,但是有时候并不知道当时相关依赖的具体版本,需要有个工具记录起来
  • 项目管理:如果项目有新人进来,都需要在新电脑上进行环境的搭建,但是经验来看肯定会有各种环境依赖问题,需要一个工具整理起来
  • 构建过慢:需要有一种快速构建的方案来进行工程提效
  • bazel应运而生
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值