Suresh Koyaは近くにいますが、いくつかの問題があります。
- Suresh の方法は
commons-lang.jar
、実際に現在のディレクトリにある場合にのみ機能します。
- jar が のような名前の場合も機能しません
commons-lang-2.6.jar
。
<filepath>
1 つ目は、サブエンティティを に追加することで修正できます<available>
。これにより<available>
、jar を検索するためのディレクトリ パスが条件に与えられます。ただし、ユーザーcommons-lang
がバージョン番号を付けてダウンロードした場合は機能しません (Maven リポジトリからの場合と同様)。
この問題を回避するには、次のようなものを使用してパス リソースを作成し<fileset>
、commons-lang jarfile のいずれかのバージョンを取得したかどうかを確認する必要があります。commons-lang
で始まり、接尾辞を持つファイルを探していることが以下でわかります.jar
。
リソースを設定したら、<resoucecount>
条件を使用して のいずれかのバージョンを選択したかどうかを確認できcommons-lang
ます。
<path id="commons-lang.path">
<fileset dir="${lib.dir}">
<incude name="commons-lang*.jar"/>
</fileset>
</path>
<fail message="Missing commons-lang Jar">
<condition>
<resourcecount refid="commons-lang.path"
when="equals" count="0"/>
</condition>
ここで、commons-lang jar について何か知っていれば、<available>
条件を使用してクラスパス内の特定のクラスを検索できたはずです。
<fail message="Can't find commons-lang Jar">
<condition>
<not>
<available classname="org.apache.commons.lang.Entities">
<classpath refid="compile.classpath"/>
</available>
</not>
</condition>
</fail>
これにより、名前に関係なく commons-lang jar が検出されます。
Ivy に興味がある場合は、開発サイト全体に Ivy を簡単に追加できるプロジェクトをGitHubに用意しています。サードパーティの依存関係の管理は、進むべき道です。Ivy の使用は、Ant と統合されるため、優れています。Maven と Gradle には利点がありますが、それらを使用するには、ビルド インフラストラクチャ全体をやり直す必要があります。