如何抑制Gradle的所有输出? [英] How can I suppress ALL output from gradle?

查看:30
本文介绍了如何抑制Gradle的所有输出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为zsh编写一个脚本,它实际上只需要知道以下Gradle命令的退出代码:./gradlew installDebug。换句话说,在运行这段代码时,我不希望任何输出到控制台。我试过以下几种方法: ./gradlew installDebug -q > /dev/null; 2>&1

这消除了99%的输出,但我仍然得到如下所示的行:

Note: Generating a MembersInjector for com.example.ui.BaseActivity. Prefer to run the dagger processor over that class instead.
Note: Generating a MembersInjector for com.example.widget.nav.NavigationDrawerActivity. Prefer to run the dagger processor over that class instead.
Note: Generating a MembersInjector for com.example.fragment.ShiftListFragment. Prefer to run the dagger processor over that class instead.

这些警告来自lint,一般来说,我希望保留它(因为当我在没有此脚本的情况下手动构建时)。我只想在此特定情况下取消输出。

我感觉我没有正确重定向给定流的输出。

推荐答案

只要您正在使用zsh,您就可以使用

./gradlew installDebug -q &> /dev/null

对于符合POSIX的shell(包括zsh),您可以使用

./gradlew installDebug -q > /dev/null 2>&1

它不起作用的原因是分号。;分隔两个命令,但重定向仅适用于每个命令,而不适用于每个命令行。因此,实际发生的情况相当于以下内容:

./gradlew installDebug -q > /dev/null
2>&1
  • 在第一个命令中,./gradlew的标准输出重定向到/dev/null,但标准错误不会更改,因此可以正常打印。

  • 第二个实际上只是一个没有命令的重定向。在这种情况下,行为取决于参数NULLCMD和选项SH_NULLCMDCSH_NULLCMD的设置。默认情况下,zsh运行cat并应用给定的重定向。

这篇关于如何抑制Gradle的所有输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆