2010-12-30 12 views
10

私はbuild.xmlという目標を持っており、Zipファイルを作成します。ファイルが更新されていない場合にZipを作成しないように、事前に更新を確認したいと思います。 AFAIK、uptodateは使用するタスクです。ここでuptodate Antコマンドでfilelistとしてfilelistを使用するには?

は、関連する(簡体字)スクリプトのセクションです:srcfilesfilelistfilesetを参照する必要がありませんので、

<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は失敗します。それでもfilesetを使用することはできません。なぜなら、ソースファイルがベースディレクトリを共有しないため、設定できないdir属性が必要になるからです。

もちろん、すべてのファイルを圧縮する前にすべてのファイルを共通のディレクトリにコピーするだけで、filesetを使用できるようになりましたが、代替ソリューションがあるかどうかは疑問でした。

私は<srcresources>を使用してみてください、代わりに<srcfiles>を使用するのAnt 1.8.1

答えて

15

を使用しています。 <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> 

が、それはあなたのために働く願っています。

+0

ありがとう、ありがとう。私はこの話題をどのように「解決」したのか分かりません、ごめんなさい。 – Elena

+1

回答の「投票数」の下に白いチェックがあります。チェックマークをクリックすると緑に変わり、質問に答えたことを意味します。 –

関連する問題