0

build.xmlに次のものが必要であることがわかりました。

<taskdef resource="net/sf/antcontrib/antcontrib.properties">
    <classpath>
        <pathelement location="${ant.library.dir}/ant-contrib-1.0b3.jar" />
    </classpath>
</taskdef>

私が使用しているant-contrib <if> ... </if>コンストラクトをサポートするために。しかし、Eclipse はこれについて非常に不機嫌です。build.xmlの先頭にあるこのセクションでは、不機嫌にも関わらず、Eclipse の外部のコマンド ラインからでも Eclipse の内部からでも、すべてが完全に機能します。

ここに画像の説明を入力

実際に「未定義」の「名前」は何ですか? この問題について何をすべきかを心から理解したいと思います。グーグル、私は他の人が同じまたは同様の問題を抱えているのを見ますが、誰も良い答えを与えていません.少なくとも私の状況には合いません.

この問題に関するコメントに感謝します。

ラス

4

2 に答える 2

3

ここで説明されている問題と簡単な回避策を見つけました:http://www.mail-archive.com/user@ant.apache.org/msg39536.html

次のビルドファイルで確認しました:

<project default="test">

  <!-- Eclipse complains if you comment this out   -->
  <property name="dummy" value="dummy"/>

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

  <target name="test">
  </target>

</project>

taskdef の前にプロパティ宣言がない場合、Eclipse は文句を言います。

私が試みた別の回避策は、タスク定義をターゲットに移動することでした。それもうまくいきました:

  <target name="test" depends="init">
  </target>

  <target name="init">
    <taskdef resource="net/sf/antcontrib/antlib.xml">
      <classpath>
        <pathelement location="C:/lib/ant-contrib/ant-contrib-1.0b3.jar"/>
      </classpath>
    </taskdef>
  </target>
于 2011-12-07T10:51:36.633 に答える
0

私がそれを行う方法が単なるスタイルかどうかはわかりませんが、次のようなクラスパス用の別の要素を作成するようなことをした場合はどうなりますか?

<path id="ant.classpath">
    <fileset dir="${ant.library.dir}">
        <include name="ant-contrib-1.0b3.jar"/>
    </fileset>
</path>

その後、 @FailedDev のような行で、classpathref属性を活用することを提案しましたか?:

<taskdef resource="net/sf/antcontrib/antcontrib.properties" 
    classpathref="ant.classpath"/>

?

または、 ANT バージョン 1.6+antlib.xmlの代わりに使用するように言われている別のものを見つけましたか?antcontrib.properties

編集:

このリンクがどの製品で問題を修正したかを判断するのに苦労していますが、この特定のコメントには、適切な回避策を提供する可能性のあるスニペットがいくつかあります。あなたが言うときは上に

少なくとも [あなたの] ソリューションに適合するものではありません。

https://bugzilla.redhat.com/show_bug.cgi?id=663236#c2

于 2011-12-06T21:59:51.907 に答える