如果标准输出或错误包含警告,如何使 Ant 构建失败?

How to make Ant build fail if standard out or error contains a warning?

我有一个由多个开发人员共同开发的基于 Ant 的构建。如果构建管道的任何部分发出警告,我想通过导致硬构建中断来约束团队。

实际上,如果 stdout 或 stderr 包含符合 "\bwarn(ing)?\b|\berror\b|\bfatal\b" 的正则表达式,其中 \b 是单词边界,我认为构建需要失败。

我怎样才能做到这一点?

如果你想控制构建的输出,你需要实现一个自定义监听器。有关详细信息,请参阅 https://ant.apache.org/manual/listeners.html。实现后,您可以通过传递 -listener fully_qualified_listener_classname 来指示 Ant 使用您的侦听器,假设 class 已添加到 class 路径。

基本上您需要实现 org.apache.tools.ant.BuildListener 并在 messageLogged 方法中执行您的逻辑,该方法接收与任务生成的日志相对应的构建事件。该事件包含要记录的消息,您可以解析该消息以确定是否停止构建,通常通过抛出运行时异常,如 BuildException.