Ant AntコマンドのUptodateでFilelistをファイルセットとして使用する方法は?

StackOverflow https://stackoverflow.com/questions/4564754

質問

のターゲットがあります 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>

それがあなたのために働くことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top