构建基础知识
构建系统是工程组织最重要的部分之一,因为每个开发者每天可能与其交互几十次或几百次。随着组织规模的扩大,开发者的高效办公体验必不可少。对个别开发者来说,直接编译代码非常简单,因此构建系统可能看起来过多。但从更大规模的角度来看,拥有构建系统可以帮助管理共享依赖项,例如依赖于代码库的其他部分或外部资源(例如库)。构建系统有助于确保您具备在开始构建之前构建代码所需的一切。构建系统还能提高设置的速度,以帮助工程师共享资源和结果。
本部分介绍了构建和构建系统的一些历史和基础知识,包括做出 Bazel 的设计决策。如果您熟悉基于工件的构建系统,例如 Bazel、Buck 和 Pants,则可以跳过此部分,但这有助于您理解基于工件的构建系统为何具备出色的规模化处理能力。
为什么使用构建系统?
如果您之前未使用过构建系统,请从这里开始。此页面介绍了为什么应该使用构建系统,以及为什么当您的组织开始超出少数开发者规模时,编译器和构建脚本不是最佳选择。
基于任务的构建系统
本页讨论了基于任务的构建系统(如 Make、Maven 和 Gradle)及其一些挑战。
基于工件的构建系统
本页讨论了基于工件的构建系统,以响应基于任务的构建系统的痛点。
分布式构建
本页面介绍分布式构建,或是在本地机器外部执行的构建。这需要更强大的基础架构来共享资源并构建结果(真正的向导就在这里!)
依赖项管理
本页面介绍了大规模依赖项的复杂性,以及应对这些复杂性的策略。
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2021-09-16 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]