Gradle 的常用命令主要围绕执行构建任务、查看项目信息和调试排查三大场景。在使用时,更推荐使用项目自带的 Gradle Wrapper(即 ./gradlew 或 gradlew.bat)来代替全局的 gradle 命令,这样可以确保所有开发成员使用统一的 Gradle 版本,避免环境差异引发的问题。
下面是按功能分类的常用命令概览:
🚀 核心构建命令
这些命令负责项目的编译、测试、打包等核心构建环节。
| 命令 | 作用 | 常用场景 |
|---|---|---|
./gradlew build |
完整构建,会执行编译、测试、检查并最终打包产出。 | 提交代码或发布前的全面验证。 |
./gradlew clean |
清理构建目录(通常是 build 文件夹),删除所有编译输出。 |
当遇到奇怪构建错误时,先执行此命令来清理缓存和旧文件。 |
./gradlew assemble |
执行组装任务,编译并打包代码,但不会运行测试。 | 只想生成产出包(如JAR、APK),跳过耗时的测试过程。 |
./gradlew check |
执行所有检查任务,通常包括运行测试和代码质量检查。 | 专注于验证代码质量,不关心打包产出。 |
./gradlew run |
运行应用程序(需要应用了 application 插件)。 |
快速启动一个Java或JVM应用的主类。 |
🔍 信息查询命令
这些命令帮助你了解项目结构、可用的任务、依赖关系等。
| 命令 | 作用 | 常用场景 |
|---|---|---|
./gradlew tasks |
列出当前项目所有可用的任务,按组分类显示。 | 刚接触一个项目时,用它来了解项目支持哪些构建操作。 |
./gradlew tasks --all |
显示更详细的任务列表,包括更多内部或生命周期任务。 | 深入查看构建流程中的所有任务。 |
./gradlew projects |
以层级结构列出多项目构建中的所有子项目。 | 了解大型项目的模块划分。 |
./gradlew dependencies |
显示项目的依赖关系树,按不同配置(如 implementation)细分。 |
排查依赖冲突,查看哪些库被引入及版本。 |
./gradlew help --task <任务名> |
显示特定任务的详细信息,包括它的路径、类型和描述。 | 想了解某个任务的详细用途或所属组时使用。 |
./gradlew -v |
显示 Gradle 版本信息,包括Groovy、Kotlin等工具的版本。 | 确认当前项目使用的Gradle版本。 |
🛠️ 高级与调试选项
这些选项可以附加到任何任务后面,用来控制构建行为或获取更多信息。
| 选项 | 作用 | 常用场景 |
|---|---|---|
-x, --exclude-task |
从执行中排除指定任务,例如 ./gradlew build -x test。 |
构建时跳过测试,加快构建速度。 |
--continue |
发生任务失败后继续构建,而不是立刻停止。 | 希望在一次构建中看到所有可能出现的错误,方便一次性修复。 |
--rerun-tasks |
强制重新运行所有任务,忽略任何“最新(UP-TO-DATE)”的缓存检查。 | 怀疑增量编译有问题时,强制完整重新构建。 |
--info 或 --debug |
分别输出信息级或调试级的详细日志。 | 构建失败且信息不足时,用更详细的日志定位问题。 |
--stacktrace |
当构建失败时,打印完整的异常堆栈信息。 | 定位错误代码行或根本原因的必备选项。 |
--scan |
构建结束后生成一份详细的、可交互的在线构建报告。 | 深度分析构建性能、依赖和失败原因,对复杂问题非常有效。 |
--dry-run 或 -m |
干运行,仅列出将被执行的任务,但不执行任何操作。 | 检查命令行中任务匹配和依赖关系是否符合预期。 |
--continuous 或 -t |
持续构建模式,当检测到文件变更时自动重新构建。 | 开发过程中希望修改代码后自动触发构建。 |
💡 常用组合示例
在实际开发中,这些命令常组合使用:
- 日常开发调试:
./gradlew assembleDebug(Android项目) 或./gradlew run(Java应用)。 - 完整发布前检查:
./gradlew clean build --stacktrace。 - 解决缓存导致的问题:
./gradlew clean build --rerun-tasks。 - 排查依赖冲突:
./gradlew :app:dependencies > deps.txt(将依赖树导出到文件分析)。 - 清理编译产物并打包jar:
./gradlew clean jar