ant - 如何检查 Ant 构建中是否存在一组文件?

标签 ant file-exists

我想知道是否有一种方法可以使用 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 任务,但也许还有更明显的东西。

最佳答案

与其使用文件集,它只会包含文件系统中确实存在的文件,并默默地忽略那些不存在的文件,请尝试 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.

关于ant - 如何检查 Ant 构建中是否存在一组文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3915708/

相关文章:

java - 构建 Cordova Android 项目时出错

eclipse - 源构建与二进制构建?

java - 使用 ant build 生成 war 时替换 jnlp 中的字符串

android - Android 上 lib 的 Emma 代码覆盖率

ios - 我的 fileExistsAtPath 语句在应该为 true 时返回 false

Python - 如何在 Ubuntu 上的根文件夹中打开或创建文件?

Python, subprocess, call(), check_call 和 returncode 来查找命令是否存在

检查 C 中是否存在具有部分名称的文件

php - 如何在php中检查url是否存在

java - 从 ant 更改 javac 路径