0

Ant スクリプトを作成し、Ant flaka jar を使用していくつかの作業を行っています。

しかし、flaka は他の外部 Ant lib としては機能しません。

たとえば、ant-contrib を含める必要がある場合:

  <taskdef resource="net/sf/antcontrib/antlib.xml">
  <classpath>
        <pathelement location="../../lib/ant-contrib.jar"/>
  </classpath>
  </taskdef>

最も重要なことは、jar の場所を指定できることです。

しかし、フラカには、そのようなことはありません。公式Webサイトでは、ユーザーにflaka jarをAntインストールフォルダーにダウンロードするように指示するだけです.

flaka jar を使用したいときにどこにあるのかを指定するにはどうすればよいですか?

4

2 に答える 2

0

まず、一般的な推奨事項をいくつか。すべての外部ライブラリは、パス上を意味するアリの視界にある必要があります。
最も原始的な方法は、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

于 2011-10-06T20:12:10.183 に答える
0

1 分以内に flaka をインストールしました。インストール手順に示されているように、.jar を ..ant/lib ディレクトリに入れるだけです。

これを実行します:

<project xmlns:c="antlib:it.haefelinger.flaka">
 <c:logo>
  Hello, #{property['ant.file'].tofile.name}
 </c:logo>
</project>

サイトにも書いてある通り。出力がこれと異なる場合:

Buildfile: C:\Users\Stefanos\Documents\Visual Studio 2010\Projects\stackOverflow\stackOverflow\build.xml
[c:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[c:logo] :                               Hello, build.xml                               :
[c:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Java のバージョンを確認してください。>= 1.5 である必要があります。ant は >= 1.7 である必要があり、最後にパーミッションを確認してください。

于 2011-10-06T19:54:14.107 に答える