让ant不要将javac的stderr重定向到stdout

让ant不要将javac的stderr重定向到stdout,java,android,ant,gruntjs,Java,Android,Ant,Gruntjs,我正在尝试将基于ant的Android构建添加到更大的基于grunt的构建系统中。然而,当ant调用javac时,在控制台输出中添加[javac]前缀时,它将javac的stderr重定向到stdout。不幸的是,这意味着grunt正在丢弃有用的错误输出,除非我在详细模式下运行它——我不希望这样做 但是,将ant的stdout重定向到stderr会导致另一个问题,因为grunt构建将任何stderr解释为要中止的错误 我想让ant做的是将javac的stderr输出保存在stderr上,这样我就

我正在尝试将基于ant的Android构建添加到更大的基于grunt的构建系统中。然而,当ant调用javac时,在控制台输出中添加[javac]前缀时,它将javac的stderr重定向到stdout。不幸的是,这意味着grunt正在丢弃有用的错误输出,除非我在详细模式下运行它——我不希望这样做

但是,将ant的stdout重定向到stderr会导致另一个问题,因为grunt构建将任何stderr解释为要中止的错误

我想让ant做的是将javac的stderr输出保存在stderr上,这样我就可以了解构建失败的原因,并在stdout上保存stdout。然而,我在Android的build.xml中没有看到任何会影响这一点的内容,ant的文档也没有任何用处

当然,简单地将ant build.xml逻辑移植为grunt构建的一部分是一项相当大的任务,我现在不想这么做


那么,在stderr重定向的背后,我是否缺少ant或Android的build.xml的一些选项,或者是否有其他方法可以让我的错误输出显示为错误?

您只需要使用-e选项。 可以按如下方式设置ANT_ARGS环境变量:

   export ANT_ARGS=-e
   ant ...


基于刚才的尝试,这并不能让stderr保持在stderr上,只是让它在发送到stdout时不会修饰线条。糟糕的是,我误读了你问的问题,给了你错误的信息。至于你问题的答案。我看了蚂蚁手册,我必须承认我没有答案。当javac失败时,javac任务会发送一条错误消息,但我无法确定它为什么不将其发送到stderr。使用带有ant的记录器如何,这会将错误放在对您有用的地方?您没有明确指定要对错误执行的操作。我希望在控制台上查看这些错误,以便了解生成失败的原因。我想这是显而易见的,但我会相应地编辑。好的。它显示在控制台上有多重要?如果您将消息保存到一个可以查看的文件中,这还不够吗?@realdonsumpoist将消息保存到一个文件中并不理想,但肯定比什么都不保存好,而且我可以在之后将其cat到stderr。然后我建议您查看ant提供的各种记录器,或者创建一个自定义记录器。
   ant -e ...