Ant AntコマンドのUptodateでFilelistをファイルセットとして使用する方法は?
-
14-10-2019 - |
質問
のターゲットがあります build.xml
これにより、zipファイルが作成されます。ファイルが更新されていない場合は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
失敗します srcfiles
参照する必要があります fileset
, 、ではありません filelist
. 。それでも、私は使用できません fileset
それが必要だから dir
ソースファイルがベースディレクトリを共有していないため、設定できません。
もちろん、すべてのファイルを共通ディレクトリにコピーする前に、それらを使用するだけで使用できます。 fileset
, 、しかし、私は別の解決策があるかどうか疑問に思っていました。
ANT 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