ant - 如何使 concat 任务因错误而失败?

标签 ant build.xml

<concat destfile="${destFile}" fixlastline="yes">
    <filelist dir="." files="${filelist}"/>
</concat>

在上面的片段中,当无法访问/定位来自 filelist 的文件时,我希望 concat 任务失败。请问实现它的最佳方式是什么?

最佳答案

这是实现相同目的的一种方法 - 但通过在 concat 之前定义文件列表,并检查文件是否存在。

大纲:

  • 创建一个带有 id 的文件列表。
  • 从相同的文件列表创建类似的文件集。
  • 获取其中每个资源的数量 - 文件集仅选择存在的文件。
  • 比较资源计数 - 如果它们不同,则某些文件不存在。

A fail task嵌入式condition用于比较计数。如果通过,则执行连接。

<filelist id="my.list" dir="." files="${filelist}" />
<fileset id="my.set" dir="." includes="${filelist}" />
<resourcecount refid="my.list" property="my.list.size" />
<resourcecount refid="my.set" property="my.set.size" />
<fail message="Only found ${my.set.size}/${my.list.size} files for concat!">
    <condition>
        <not>
            <equals arg1="${my.set.size}" arg2="${my.list.size}" />
        </not>
    </condition>
</fail>

<concat destfile="${destFile}" fixlastline="yes">
    <filelist refid="my.list" />
</concat>

要获取丢失的文件列表,请使用类似的东西:

<difference id="missing">
    <resources refid="my.list"/>
    <resources refid="my.set"/>
</difference>

然后您可以将fail 任务修改为:

<fail message="Missing files for concat: ${ant.refid:missing}">

关于ant - 如何使 concat 任务因错误而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9161986/

相关文章:

java - Spring 应用程序的正确入口点是什么?

php - 警告 : PHPLoc enrichment not enabled or phploc. 在 phpDox 中未找到 xml

Ant 任务确定文件是否为只读

eclipse - ant jar 命令给出错误 : "Building MANIFEST-only jar"

java - 运行 ant build.xml 并传递 "environment url"参数

java - 如何在 Ant WAR 任务中包含配置文件?

java - 如何为 Ant 任务创建嵌套元素?

ant - 在 Ant 或 MSBuild 中编写构建脚本的任何最佳实践

ant - 如何让 Ant 忽略来自一个目标的错误?

java - 使用ant发布android包时编译错误