构建基础

报告问题 查看源代码 每夜版 · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

构建系统是工程组织最重要的部分之一,因为每位开发者每天可能会与它互动数十次或数百次。随着组织规模的扩大,需要使用功能全面的构建系统来提高开发者的工作效率。对于个人开发者来说,只需编译代码即可,因此构建系统似乎显得多余。但从更大规模来看,构建系统有助于管理共享依赖项,例如依赖于代码库的另一部分或外部资源(例如库)。构建系统有助于确保您在开始构建代码之前拥有构建代码所需的一切。如果构建系统设置得当,可帮助工程师共享资源和结果,也能提高速度。

本部分将介绍构建和构建系统的一些历史和基础知识,包括在制作 Bazel 时做出的设计决策。如果您熟悉基于制品的构建系统(例如 Bazel、Buck 和 Pants),则可以跳过本部分,但本部分提供了一个有用的概览,可帮助您了解为什么基于制品的构建系统非常适合实现规模化。

  • 为什么要使用 build 系统?

    如果您之前未使用过 build 系统,请从此处开始。本页介绍了为何应使用构建系统,以及为何当组织开始扩展到几位开发者以上时,编译器和构建脚本不再是最佳选择。

  • 基于任务的构建系统

    本页讨论了基于任务的 build 系统(例如 Make、Maven 和 Gradle)及其面临的一些挑战。

  • 基于制品构建的系统

    本页讨论了基于制品构建的构建系统,以解决基于任务构建的构建系统存在的问题。

  • 分布式 build

    本页介绍了分布式 build,即在本地机器之外执行的 build。这需要更强大的基础设施来共享资源和构建结果(真正的神奇之处就在于此!)。

  • 依赖项管理

    本页介绍了大规模依赖项的一些复杂情况以及应对这些复杂情况的策略。