如何使concat任务失败?

时间:2012-02-06 14:53:31

标签: ant build.xml

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

在上面的片段中,当concat的文件无法访问/找到时,我希望filelist任务失败。请问最好的方法是什么?

1 个答案:

答案 0 :(得分:4)

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

概要

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

嵌入fail taskcondition用于比较计数。如果通过,则执行连续。

<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}">