如何抑制gradle的所有输出?

时间:2016-09-09 15:24:06

标签: gradle scripting output zsh

我正在为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,一般来说,我想保留(当我手动构建时,没有此脚本)。我只想在这个特定情况下抑制输出。

我觉得我只是没有正确地重定向给定流的输出。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

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