1

Ant ビルドには、次のようなファイル セットがあります。

<fileset dir="somewhere/lib" includesfile="third-party-jars.txt"/>

次に、すべての jar がテキスト ファイルに完全に綴られます。(別のテキスト ファイルにある理由は、実際にはビルド ファイルの簡潔さとは関係ありませんが、すべてのサード パーティの jar ファイル ライセンスが文書化されていることを確認する統合テストからリストを調べやすくするためです。 )

誰かがコミットを行い、ファイルがビルドに入るのを妨げました。Ant は不足しているファイルをまったく検出しませんでした。ビルドは続行されました。ファイル名がフルスペルであるにもかかわらず、ファイルが見つからないことが検出されないのは悪いようです... そこで、今それを解決しようとしています.

の属性がありますがerroronmissingdir、追加しても役に立ちません (dirが欠落しているわけではありません)。ファイルセット内の欠落ファイルに関するエラーを取得する方法はありますか? 理想的にはコンパクトな方法です...これらのファイルセットが複数あり、コードの複製は魅力的に聞こえないためです。

他の人は、単一のファイルをチェックしたい場合に、これのより単純な変形を求めています。1 つのファイルをチェックするには、availableタスクを使用します。availableただし、1 つのリソースしかサポートしていないようです。

リソース コレクションを制限して、使用可能なリソースと使用できないリソースを見つけようと試みました。

<restrict id="temp.available"><resources refid="@{ref-name}"/></restrict>
<difference id="temp.unavailable">
  <resources refid="@{ref-name}"/>
  <resources refid="temp.available"/>
</difference>
<fail message="Missing stuff">
  <condition>
    <resourcecount refid="temp.unavailable" when="greater" count="0"/>
  </condition>
</fail>

リソース コレクションに存在しないアイテムが既に存在しないため、これは機能しません。

4

1 に答える 1

0

あなたが求めているものは、ネイティブfilesetサポートで得ることは不可能です。filesetスキャナーとして機能します。特定のディレクトリに基づいており、指定した包含/除外パターンに従ってすべてのファイルが含まれます。Ant1.7かそこらまでerroronmissingdirの一部ではありませんでした。fileset

最善の策は、availableタスクの周囲にマクロを記述し、リソースコレクションをマクロに渡し、forループ(Ant-Contribから)を使用して各ファイルの可用性をテストすることです。

于 2012-11-21T02:55:28.377 に答える