3

一方が他方をインポートするいくつかのantファイルがあります。具体的にbuild.xmlは、 をインポートしproject_default.xmlます。ビルドしようとすると、次のエラーが発生します。

ビルドファイル: C:\myproject\build.xml [タスク定義] リソース net/sf/antcontrib/antcontrib.properties から定義を読み込めませんでした。見つかりませんでした。

BUILD FAILED C:\myproject\build.xml:14: この行の実行中に次のエラーが発生しました: C:\myproject\project_default.xml:17: 問題: 原因: 名前が定義されていない場合、タスクまたはタイプを作成できませんでした。処置: スペルを確認してください。処置: カスタム・タスク/タイプが宣言されていることを確認してください。処置: /宣言が行われたことを確認してください。

報告される 17 行目は次のとおりです。

<if>   
<contains string="${env.PROJECT_SELECTION}" substring="env.PROJECT_SELECTION" />  

に以下も追加しましたbuild.xml

<taskdef resource="net/sf/antcontrib/antcontrib.properties">  
  <classpath>  
    <pathelement location="D:\UserData\ant-contrib-0.6-bin\lib\ant-contrib-0.6.jar"/>  
  </classpath>  
</taskdef>  

しかし、同じエラーが発生しました。ここで何が問題なのか分かりますか?

4

2 に答える 2

2

Ant バージョン > 1.6 では、「net/sf/antcontrib/antcontrib.properties」の代わりに「net/sf/antcontrib/antlib.xml」を使用する必要があります。

taskdef を次のように変更します。

<taskdef resource="net/sf/antcontrib/antlib.xml">  
  <classpath>  
    <pathelement location="D:\UserData\ant-contrib-0.6-bin\lib\ant-contrib-0.6.jar"/>  
  </classpath>  
</taskdef>  

乾杯、

于 2012-09-14T08:11:56.903 に答える
0

最初に確認することは、ant-contrib jar パスが正しいことです。ant を実行して、ant が-verbose何をしているのか、どこからどのタスクをロードしようとしているのかについての詳細を取得します。

taskdef をどこに追加しましたか? ターゲットの外側でタスクを使用している場合は、<if>タスクの前に、ターゲットの外側でも taskdef が必要です。<if>ターゲット内でそれを使用している場合、タスク定義は、ターゲットの外側または依存関係の順序の前に実行されるターゲット内にある限り、(テキスト的に) 呼び出しの後にすることができます。

于 2012-09-14T08:16:55.167 に答える