我有一个目标 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>

希望对你有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top