Apache Ant 能否在文件集上完全运行任务而不会在第一次失败时停止?

Apache Ant 能否在文件集上完全运行任务而不会在第一次失败时停止?

我在 ant 中设置了一个目标,它对自上次检查以来所有修改的文件运行 PHP lint 检查。

<target
    name="lint"
    unless="lint.done">
    <apply executable="php" taskname="lint" failonerror="true">
        <arg value="-l">
        <fileset dir="...">
            <include name="**/*.php">
            <modified/>
        </fileset>
    </apply>
</target>

不幸的是,如果由于单个文件未通过 lint 检查而导致此操作失败,则所有其他文件将不会进行 lint 检查,但仍将存储在修改后的缓存中。导致失败的文件也将被缓存,modified 这意味着下次运行时,检查将通过,即使没有进行任何更改来解决 lint 检查失败的原因。

最后,如果确实发生了 lint 错误,构建应该会失败。困难的部分是尝试让它失败,而不是在 lint 完成之前停止。

解决方案如下:

  • 如果检查失败,则不要更新修改后的缓存。
  • 如果一个文件的检查失败,则继续对其他文件进行 lint 检查,但仍将构建标记为失败。

这两种解决方案都可以实现吗?

对于第一点,我知道您可以传递一个参数来modified停止缓存更新。然后,您可以modified在 lint 检查后调用第二个,以便在检查成功时仅缓存文件吗?

对于第二点,我能想到的主要方法是不要因 lint 错误而失败,而是将 lint 结果传递到一个脚本中,该脚本会根据需要一次检查并输出所有失败的文件。

相关内容