我想知道是否有一种方法可以使用 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/