我想知道是否有办法使用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任务,但也许有更明显的东西。
答案 0 :(得分:1)
不是使用仅包含文件系统中存在的文件的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.