--quiet(或 -q)仅输出 ERROR 和 QUIET 级别日志,屏蔽 WARNING、LIFECYCLE、INFO、DEBUG,适用于 CI/CD、快速验证、脚本解析等需精简日志的场景,但不抑制编译器错误或插件直接打印的 System.out 输出。

用 --quiet(或 -q)就能显著减少日志输出,只保留错误和关键信息。 默认的 LIFECYCLE 级别会打印任务执行进度(比如 :app:compileDebugJavaWithJavac),对 CI 脚本或快速验证结果反而干扰大。
什么时候该用 --quiet
适用于以下场景:
- CI/CD 流水线中希望日志干净、易 grep 错误关键词(如
BUILD FAILED或error:) - 本地快速确认某个 task 是否成功,不想被中间过程刷屏
- 配合
--continue使用时,避免大量成功任务的日志淹没真正失败的堆栈 - 脚本中调用
./gradlew且后续依赖 stdout 解析结果(例如判断是否包含SUCCESS)
--quiet 实际输出什么
它只显示 QUIET 及更高级别的日志,也就是:
-
ERROR:编译失败、插件异常、配置错误等真实错误 -
QUIET:极少数由 Gradle 自身或插件主动打出的“重要提示”,比如Build cache is disabled(但这类消息其实很少) - 完全不显示:
WARNING、LIFECYCLE(任务名)、INFO(输入/输出路径)、DEBUG
示例对比:
./gradlew assembleDebug -q
可能只输出:
BUILD FAILED in 2s * What went wrong: Execution failed for task ':app:compileDebugJavaWithJavac'.
而默认命令会多出几十行 :app:preBuild、:app:mergeDebugResources 等生命周期日志。
容易踩的坑
--quiet 不是万能静音开关,注意这些边界情况:
- 它不抑制 Java 编译器(javac)或 Kotlin 编译器(kotlinc)自身的错误输出——这些仍会原样打印,属于子进程 stdout/stderr,Gradle 日志级别控制不了
- 某些插件(比如旧版
androidx.navigation或自定义Task)可能直接调用System.out.println(),这类输出不受--quiet影响 - 如果构建失败但错误信息藏在
WARNING级别(比如依赖版本冲突警告后才触发失败),--quiet会把它吞掉,导致你只看到BUILD FAILED却找不到原因 - 和
--stacktrace同时使用时,堆栈本身仍会输出,但周围所有生命周期日志消失,有时反而更难定位是哪个 task 触发了异常
真要彻底收窄输出,得组合用:./gradlew build -q --stacktrace 2>&1 | grep -E "(FAILED|Exception|Caused by)"。不过多数时候,-q 已经够用——前提是你知道它藏掉了什么。


















