3

我想知道是否有办法使用 Ant 检查磁盘上是否有多个文件可用。目前,我有一个看起来像这样的任务:

<target name="copyArtworkToOutputDir" if="artworkContent">
  <copy todir="${imageOutputDir}" failonerror="true">
    <fileset dir="${sourceDir}" includesfile="${buildDir}/artworklist"/>
  </copy>
</target>

'artworklist' 是在构建之前创建的文件列表。我可以将它作为文件集传递给“复制”任务,我最终应该得到一个包含列表中所有文件的文件夹。不幸的是,有时这不起作用,并且由于缺少资源,构建可能会在稍后的步骤中显着失败。

我尝试将'failonerror'设置为true,希望如果源位置中不存在artworklist中指定的文件,它将引发异常。无论出于何种原因,这似乎都没有按我的预期工作。

所以,我的下一个想法是使用类似“可用”任务的东西来验证艺术品列表的内容现在是否存在于输出位置。可用似乎仅限于单个文件。所以我在这里也有点死胡同。

有人可以建议一种方法来验证我希望在${buildDir}复制后包含的所有文件是否确实存在?在这一点上,我正在考虑一个自定义 Ant 任务,但也许还有一些更明显的东西。

4

1 回答 1

2

与其fileset使用filelist. 文件列表可以包含文件系统中不存在的文件,因此可用于您的检查 - Ant 在尝试处理文件列表中不存在的文件时会抛出错误。

小例子:

<filelist
    id="artworkfiles"
    dir="${src.dir}"
    files="foo.xml,bar.xml"/>

<copy todir="${dest.dir}" failonerror="true" >
    <filelist refid="artworkfiles" />
</copy>

...
BUILD FAILED
build.xml:14: Warning: Could not find resource file ".../src/bar.xml" to copy.

$ ls src
foo.xml    # No bar.xml in src dir.
于 2010-10-12T15:02:38.837 回答