如何将filelist用作uptodate ant命令中的文件集?
-
14-10-2019 - |
题
我有一个目标 build.xml
这会创建一个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
必须参考 fileset
, ,不是 filelist
. 。不过,我不能使用 fileset
因为这需要一个 dir
属性,我无法设置该属性,因为源文件不共享基本目录。
当然,我可以将所有文件复制到一个通用目录之前,然后才能使用 fileset
, ,但我想知道是否有其他解决方案。
我正在使用蚂蚁1.8.1
解决方案
而不是使用 <srcfiles>
, ,尝试使用 <srcresources>
. <srcfiles>
必须是文件集,但是 <srcresource>
可以是任何资源集合的结合,其中应包括 filelist
.
我现在不能进行任何测试,但是看起来应该这样:
<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">
<union id="zip-union">
<filelist refid="zip-files"/>
</union>
<uptodate property="zip-uptodate"
targetfile="${zip-file}">
<srcresources refid="zip-union" />
</uptodate>
</target>
希望对你有效。
不隶属于 StackOverflow