我的目标build.xml
是创建一个 Zip 文件。为了避免在没有文件更新的情况下创建 Zip,我想事先检查更新。AFAIK,uptodate
是使用的任务。
以下是相关的(简化的)脚本部分:
<filelist id="zip-files">
<file name="C:/main.exe" />
<file name="D:/other.dll" />
</filelist>
<target name="zip" depends="zip-check" unless="zip-uptodate">
<zip destfile="${zip-file}" >
<filelist refid="zip-files" />
</zip>
</target>
<target name="zip-check">
<uptodate property="zip-uptodate"
targetfile="${zip-file}">
<srcfiles refid="zip-files" />
</uptodate>
</target>
但是,uptodate
失败是因为srcfiles
必须引用 a fileset
,而不是 a filelist
。不过,我不能使用 a fileset
,因为它需要一个dir
属性,我无法设置该属性,因为源文件不共享基本目录。
当然,我可以在压缩它们之前将所有文件复制到一个公共目录,从而能够使用fileset
,但我想知道是否有替代解决方案。
我正在使用 Ant 1.8.1