まず、一般的な推奨事項をいくつか。すべての外部ライブラリは、パス上を意味するアリの視界にある必要があります。
最も原始的な方法は、ant アドオンを $ANT_HOME/lib に置くことですが、これは ant インストールを「汚染」します。
外部ライブラリを独自の場所 fe /ant_xtralibs に配置し、Ant_ARGS を介して -lib パラメータを使用します。Flaka マニュアル
のセクション 2 には、それに関するいくつかのメモがあります。詳細については、Ant のマニュアルを参照してください。
antcontrib を扱うあなたの例では、taskdef リソースを介して従来のアプローチを
使用しています。Flaka マニュアルが
セクション 2 の直前に言及しているように、最新の推奨される方法は、XML 名前空間宣言を使用
することです。次の XML 名前空間宣言が含まれています」
従来の方法で taskdef を介して Flaka を使用することもできます。
<project>
<taskdef resource="it/haefelinger/flaka/antlib.xml">
<classpath>
<pathelement location="/home/rosebud/flaka/ant-flaka-1.02.02.jar"/>
</classpath>
</taskdef>
<!-- when on path via -lib or ANT_ARGS it's enough to use : -->
<taskdef resource="it/haefelinger/flaka/antlib.xml"/>
<logo>
Hello, #{property['ant.file'].tofile.name}
</logo>
</project>
出力
Trying to override old definition of datatype filterset
Trying to override old definition of task fail
Trying to override old definition of task echo
[logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[logo] : Hello, demo.xml :
[logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
「Trying to override..」で始まる行に注意してください。これは、Flaka がいくつかの ant タスクを拡張しているためです。
ただし、Flaka を独自の名前空間に配置すると、次のようになります。
<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka">
<fl:logo>
Hello, #{property['ant.file'].tofile.name}
</fl:logo>
</project>
出力
[fl:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[fl:logo] : Hello, demo.xml :
[fl:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Flaka は独自の名前空間に存在するため、"Trying to override..." は、ant 自身のタスクとの競合がなくなることを意味します。
簡潔に言うと:
1) ANT_ARGS を使用して、extralibs (Flaka .. など) をゲームに導入する
2) 最新の名前空間宣言の方法を使用する
クラスパスEDITと組み合わせた名前空間を要求するコメントの後にEDIT
はい、動作します。antlib の詳細については、Ant のマニュアルを参照してください。特に、
「ビルドファイル内から antlib をロードする」セクションを参照してください。
<project xmlns:fl="antlib:it.haefelinger.flaka">
<taskdef uri="antlib:it.haefelinger.flaka"
resource="it/haefelinger/flaka/antlib.xml"
classpath="path/to/flaka.jar"/>
しかし、 $ANT_ARGS を使用する利点がまだ得られていないと思います。
単にいくつかのスクリプトを使用して、ant スクリプト fe を開始します。
Windows の場合
set JAVA_HOME=C:\java\jdk\1.6.0_26
set ANT_HOME=C:\ant
set ANT_ARGS=-lib C:\ant_xtralibs;C:\ant_testlibs
set PATH=%PATH%;%JAVA_HOME%\bin;% ANT_HOME%\bin;C:\cvsnt
:: デフォルト
の呼び出し ant -f %1
:: debug
::call ant -debug -f %1
... など
Linux/Unix の場合 - ANT_ARGS 行の引用符を忘れないでください。
...
ANT_ARGS="-lib /usr/local/ant_xtralibs:/usr/local/ant_testlibs"
ANT_ARGS をエクスポート
...
もうクラスパスで taskdef を使う必要はありません!!
-lib オプションを使用して追加のライブラリをロードすることには、別の利点があります。
Ant (fe BSF、js、xml)がビルドファイルの解析を開始する
前にロードする必要があるライブラリがいくつかあります。
ANT_ARGS は特別な環境変数です。その内容は、Ant の呼び出しに自動的に追加されます。
-- その他の可能性 --
1)
これらの 'set ANT_ARGS ...' を = に入れる
Linux/Unix
$ANT_HOME/bin/ant
Windows
%ANT_HOME%/bin/ant.bat
不利な点 = ant コアのインストールを
変更します。ant のインストールを別のマシンにコピーする
と、奇妙なことが起こる前に変更を覚えておいてください。
2)
extralibs を ${user.home}/.ant/lib に配置
する利点 = すべてのユーザーが独自のライブラリ セットを使用できる
詳細については、Ant のマニュアルを参照してください。
http://ant.apache.org/manual/running.html#commandline
http://ant.apache.org/manual/running.html#libs