构建系统是工程组织最重要的部分之一,因为每位开发者每天可能与其互动数十次或数百次。随着组织规模的扩大,必须使用功能齐全的构建系统来提高开发者的工作效率。对于个人开发者来说,只需编译代码即可,因此构建系统可能显得过于复杂。但在更大规模的情况下,拥有构建系统有助于管理共享依赖项,例如依赖于代码库的另一部分或外部资源(例如库)。构建系统有助于确保您在代码开始构建之前拥有构建代码所需的一切。如果构建系统的设置有助于工程师共享资源和结果,还可以加快工作速度。
本部分介绍了构建和构建系统的一些历史和基础知识,包括 Bazel 的设计决策。如果您熟悉基于工件的构建系统(例如 Bazel、Buck 和 Pants),可以跳过本部分;但本部分提供了一个实用概览,有助于您了解基于工件的构建系统为何非常适合实现规模扩展。
-
如果您之前未使用过构建系统,请从此处开始。本页介绍了为何应使用构建系统,以及为何在组织开始扩展到超过少数开发者的规模后,编译器和构建脚本不是最佳选择。
-
本页将介绍基于任务的构建系统(例如 Make、Maven 和 Gradle)及其一些挑战。
-
本页介绍了基于工件的构建系统,以应对基于任务的构建系统的痛点。
-
本页介绍了分布式 build,即在本地机器之外执行的 build。这需要更强大的基础架构来共享资源和取得成效(这也是真正神奇的地方!)
-
本页介绍了一些大型依赖项的复杂性,以及应对这些复杂性的策略。