【问题标题】:Getting ant to not redirect javac's stderr to stdout让 ant 不将 javac 的标准错误重定向到标准输出
【发布时间】:2014-12-11 23:57:14
【问题描述】:

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

但是,将ant 的标准输出重定向到标准错误会导致不同的问题,因为 grunt 构建会将 任何标准错误解释为要中止的错误。

我想让 ant 做的是将 javac 的 stderr 输出保留在 stderr 上(这样我就知道为什么我的构建失败了),并将 stdout 保留在 stdout 上。但是,我在 Android 的 build.xml 中没有看到任何会影响这一点的内容,ant 的文档也没有用处。

当然,“简单地”将 ant build.xml 逻辑移植为 grunt 构建的一部分是一项相当大的工作,我目前不想这样做。

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

【问题讨论】:

  • 如何使用带有 ant 的记录器,这会将错误放在对您有用的地方?你没有具体说明你想对这些错误做什么。
  • 我想在控制台上看到它们,这样我就知道为什么我的构建失败了。我认为这是不言而喻的,但我会相应地进行编辑。
  • 好的。它出现在控制台上有多重要?如果您将消息保存到您可以查看的文件中,这还不够吗?
  • @RealSkeptic 将它们保存到文件中并不理想,但总比没有好,之后我总是可以将它转换到 stderr。
  • 那我建议你看看ant提供的各种记录器,或者创建一个自定义的。

标签: java android ant gruntjs


【解决方案1】:

您只需要使用“-e”选项。 您可以设置 ANT_ARGS 环境变量,如下所示:

   export ANT_ARGS=-e
   ant ...

   ant -e ...

【讨论】:

  • 基于刚才的尝试,它不会将 stderr 保留在 stderr 上,它只是使它在发送到 stdout 时不会装饰行。​​
  • 我的错,我误读了您提出的问题并给了您错误的信息。至于你的问题的答案。我看了蚂蚁手册,我必须承认我没有答案。 javac 任务在 javac 失败时发送错误消息,但我无法确定它为什么不将其发送到 stderr。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 2012-08-15
  • 2020-11-05
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
相关资源
最近更新 更多