一、Gradle任务执行的实用技巧

Gradle最基础也最重要的功能就是执行构建任务。很多人可能只会用gradle build,但其实命令行支持更灵活的操作方式。

比如你想单独运行测试任务:

// 技术栈:Java项目
gradle test  // 执行所有测试
gradle :module:test  // 仅执行特定模块的测试

更实用的场景是当你只想执行某个特定测试类时:

gradle test --tests com.example.MyTestClass  // 运行单个测试类
gradle test --tests "com.example.*"  // 通配符匹配多个测试

小技巧:使用-x参数可以排除不需要的任务。比如你想构建但不运行测试:

gradle build -x test  // 跳过测试阶段

二、构建缓存的高效使用

Gradle的构建缓存能显著提升构建速度,特别是当你经常执行clean后重新构建时。

启用构建缓存很简单:

gradle build --build-cache  // 单次启用

或者在gradle.properties中永久配置:

org.gradle.caching=true  // 全局启用缓存

缓存的实际效果示例:

// 第一次执行(耗时较长)
gradle clean assemble --build-cache  
// 第二次执行(速度提升50%+)
gradle clean assemble --build-cache

注意事项:

  1. 缓存会占用磁盘空间
  2. 不适合频繁变更的模块
  3. CI环境中建议配合--no-build-cache使用

三、依赖分析的深度实践

依赖冲突是常见问题,Gradle提供了强大的分析工具。

查看依赖树:

gradle dependencies  // 显示完整依赖树
gradle :app:dependencies --configuration compileClasspath  // 查看具体配置

更实用的依赖检查:

gradle dependencyInsight --dependency guava  // 追踪特定依赖
gradle dependencies --scan  // 生成详细报告

解决冲突的实战示例:

// 在build.gradle中强制指定版本
configurations.all {
    resolutionStrategy {
        force 'com.google.guava:guava:32.1.2-jre'
    }
}

四、离线构建的完整方案

在没有网络连接的环境中,离线构建就变得非常重要。

基础离线模式:

gradle --offline build  // 完全离线运行

更完整的准备工作:

// 首先缓存所有依赖
gradle dependencies --refresh-dependencies  
// 然后打包缓存(Linux/Mac)
tar -zcvf gradle_cache.tar ~/.gradle/caches

离线构建的典型错误处理:

// 当缺少依赖时会报错:
// > Could not resolve all dependencies for configuration ':app:compileClasspath'
// 解决方案是提前下载好所有依赖

五、实战场景与技巧总结

应用场景分析:

  1. 多模块项目适合使用任务过滤
  2. 团队协作推荐启用构建缓存
  3. 依赖分析在升级框架时特别有用
  4. 离线构建对CI/CD流水线很重要

技术优缺点:

  • 优点:大幅提升构建效率,解决依赖问题
  • 缺点:需要额外学习成本,缓存可能带来隐性问题

注意事项提醒:

  1. 不要在生产环境使用--offline
  2. 定期清理构建缓存(建议每周)
  3. 依赖分析会拖慢构建速度
  4. 复杂项目建议结合--parallel使用

终极技巧组合:

// 高效构建命令模板
gradle build --build-cache --parallel --configure-on-demand -x test

掌握这些命令行技巧后,你会发现Gradle构建从"能用"变成了"好用"。刚开始可能需要适应,但形成习惯后,你的开发效率会有明显提升。建议从最简单的--build-cache开始尝试,逐步应用到日常工作中。