面试题答案
一键面试1. 配置缓存
- 方法:开启Gradle配置缓存,它会缓存构建脚本的配置阶段输出。在
gradle.properties
文件中添加org.gradle.configureondemand=true
和org.gradle.caching=true
。前者开启按需配置,后者开启缓存。 - 应用场景:适用于每次构建时构建脚本配置相对稳定,没有频繁变动的大型项目。比如项目依赖结构基本固定,只是代码会频繁更新的场景,这样可以避免重复配置构建脚本,显著提升构建速度。
2. 并行构建
- 方法:在
gradle.properties
文件中设置org.gradle.parallel=true
。Gradle会并行执行项目中的子项目构建,充分利用多核CPU的优势。 - 应用场景:项目由多个相互独立的子项目组成,比如模块化架构的大型项目,各个子项目的构建不依赖彼此的输出,并行构建能大幅缩短整体构建时间。
3. 优化依赖解析
- 方法:
- 指定依赖版本:明确指定依赖的版本号,避免Gradle自动解析最新版本带来的不确定性和额外的解析时间。例如
implementation 'com.example:library:1.0.0'
。 - 使用本地缓存:配置Maven或Gradle本地缓存,减少从远程仓库下载依赖的次数。可以在
settings.gradle
中配置mavenLocal()
。 - 排除不必要依赖:仔细分析项目需求,去除那些没有实际使用的依赖。比如在
implementation ('com.example:library') { exclude group: 'com.unused', module: 'module' }
。
- 指定依赖版本:明确指定依赖的版本号,避免Gradle自动解析最新版本带来的不确定性和额外的解析时间。例如
- 应用场景:当项目依赖众多,依赖更新不频繁,或者远程仓库不稳定、网络状况不佳时,优化依赖解析能有效提升构建速度。如一些企业内部项目,依赖相对固定且内部有稳定的私有仓库。
4. 优化构建脚本
- 方法:
- 减少脚本中的动态代码:尽量使用常量和静态配置,避免在构建脚本中执行复杂的动态逻辑,因为动态代码每次执行都需要重新计算。
- 按需引入插件:只在需要的地方引入插件,而不是在根项目中全局引入。例如,仅在某个特定子项目需要Java插件时,在该子项目的
build.gradle.kts
中引入plugins { java }
。
- 应用场景:适用于构建脚本逻辑复杂,有较多自定义动态逻辑的项目。通过优化脚本结构,让Gradle在配置和执行阶段能够更高效地运行。