构建基础
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
构建系统是工程组织最重要的部分之一,因为每个开发者每天可能与其交互几十次或几百次。随着组织规模的扩大,开发者的高效办公体验必不可少。对个别开发者来说,直接编译代码非常简单,因此构建系统可能看起来过多。但从更大规模的角度来看,拥有构建系统可以帮助管理共享依赖项,例如依赖于代码库的其他部分或外部资源(例如库)。构建系统有助于确保您具备在开始构建之前构建代码所需的一切。构建系统还能提高设置的速度,以帮助工程师共享资源和结果。
本部分介绍了构建和构建系统的一些历史和基础知识,包括做出 Bazel 的设计决策。如果您熟悉基于工件的构建系统,例如 Bazel、Buck 和 Pants,则可以跳过此部分,但这有助于您理解基于工件的构建系统为何具备出色的规模化处理能力。
为什么使用构建系统?
如果您之前未使用过构建系统,请从这里开始。此页面介绍了为什么应该使用构建系统,以及为什么当您的组织开始超出少数开发者规模时,编译器和构建脚本不是最佳选择。
基于任务的构建系统
本页讨论了基于任务的构建系统(如 Make、Maven 和 Gradle)及其一些挑战。
基于工件的构建系统
本页讨论了基于工件的构建系统,以响应基于任务的构建系统的痛点。
分布式构建
本页面介绍分布式构建,或是在本地机器外部执行的构建。这需要更强大的基础架构来共享资源并构建结果(真正的向导就在这里!)
依赖项管理
本页面介绍了大规模依赖项的复杂性,以及应对这些复杂性的策略。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-03-21。
[{
"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":"其他"
}]