ant-contrib необходим в 1.8.2 build.xml, но вызывает ошибки - PullRequest
0 голосов
/ 07 декабря 2011

Мне нужно следующее в build.xml :

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

для поддержки конструкции ant-contrib ... , которую я использую. Тем не менее, Затмение очень раздражительно по этому поводу. С этим разделом в верхней части build.xml все работает идеально, будь то из командной строки вне Eclipse или внутри Eclipse, несмотря на раздражительность:

enter image description here

Какое "имя" на самом деле является "неопределенным"? Мне бы очень хотелось понять, что делать с этой проблемой. Погуглив, я вижу, что у других были идентичные или похожие проблемы, но никто не дал хорошего ответа, по крайней мере, не подходящего для моей ситуации.

Профуз, спасибо за любые комментарии по этой проблеме,

Russ

Ответы [ 2 ]

3 голосов
/ 07 декабря 2011

Я нашел проблему и простое решение, описанное здесь: 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>

Если у вас нет объявления свойства до задания задачи, 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>
0 голосов
/ 07 декабря 2011

Я не знаю, является ли способ, которым я это делаю, просто стилем или нет, но что, если вы сделали что-то вроде создания отдельного элемента для пути к классам, например:

<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 следует использовать antlib.xml вместо antcontrib.propertiesверсии 1.6 +?

Редактировать:

Мне трудно определить, в каком продукте эта ссылка устранила проблему, но, если ничего не осталось, есть пара фрагментовв этом конкретном комментарии, который может обеспечить подходящий обходной путь для вас - хотя, может быть, это то, что вы имеете в виду, когда говорите

, никто не дал хорошего ответа, по крайней мере, не подходит[ваше] решение.

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

...