3

Ant を使用して、ディスク上に複数のファイルがあるかどうかを確認する方法があるかどうか疑問に思っています。現在、次のようなタスクがあります。

<target name="copyArtworkToOutputDir" if="artworkContent">
  <copy todir="${imageOutputDir}" failonerror="true">
    <fileset dir="${sourceDir}" includesfile="${buildDir}/artworklist"/>
  </copy>
</target>

「artworklist」は、ビルドの初期段階で作成されたファイルのリストです。これをファイルセットとして「コピー」タスクに渡すと、リスト内のすべてのファイルを含むフォルダーが作成されます残念ながら、それがうまくいかないこともあり、リソースが不足しているためにビルドが後のステップで劇的に失敗する可能性があります。

アートワークリストで指定されたファイルがソースの場所に存在しない場合に例外がスローされることを期待して、「failonerror」を true に設定しようとしました。何らかの理由で、これは期待どおりに機能しないようです。

そこで、次に考えたのは、'available' タスクのようなものを使用して、アートワーク リストの内容が現在出力場所に存在することを検証することでした。ただし、利用できるのは単一のファイルに制限されているようです。だから私もここで少し行き詰まりました。

${buildDir}コピー後に存在すると予想されるすべてのファイルが実際にそこにあることを確認できる方法を誰かが提案できますか? この時点で、Ant のカスタム タスクを考えていますが、もっとわかりやすいものがあるかもしれません。

4

1 に答える 1

2

filesetファイル システムに存在するファイルのみを含め、存在しないファイルは黙って無視する を使用するのではなく、 を試してくださいfilelist。ファイルリストには、ファイルシステムに存在しないファイルを含めることができるため、チェックに使用できます。ファイルリストに存在しないファイルを処理しようとすると、Ant はエラーをスローします。

小さな例:

<filelist
    id="artworkfiles"
    dir="${src.dir}"
    files="foo.xml,bar.xml"/>

<copy todir="${dest.dir}" failonerror="true" >
    <filelist refid="artworkfiles" />
</copy>

...
BUILD FAILED
build.xml:14: Warning: Could not find resource file ".../src/bar.xml" to copy.

$ ls src
foo.xml    # No bar.xml in src dir.
于 2010-10-12T15:02:38.837 に答える