10

build.xmlZipファイルを作成するターゲットがあります。ファイルが更新されていない場合に Zip を作成しないようにするために、事前に更新を確認したいと思います。私の知る限り、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があるため、失敗します。それでも、ソース ファイルがベース ディレクトリを共有していないために設定できない属性が必要になるため、 a を使用することはできません。srcfilesfilesetfilelistfilesetdir

もちろん、すべてのファイルを共通のディレクトリにコピーしてから圧縮することもできたので、fileset.

私はAnt 1.8.1を使用しています

4

1 に答える 1

15

を使用する代わりに、 を使用して<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>

それがうまくいくことを願っています。

于 2010-12-30T19:14:59.200 に答える