Подтвердить что ты не робот

Apache ant не распознает 'для' задачи/макроса, хотя я добавил ant -contrib через taskdef

Я выполняю следующие действия при создании ant build:

Build\build.xml:247: Problem: failed to create task or type
for
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.

Строка build.xml 247 <for param="file">

Уже определен <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>, это не сработало. Затем я добавил следующее, но он все еще не работает.

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

У меня ant -contrib-1.0b3.jar в каталоге C:\Softwareware\apache- ant -1.8.4\lib.
Что здесь отсутствует?

4b9b3361

Ответ 1

Если вы поместили баннер AntContrib в каталог $ANT_HOME/lib, все, что вам действительно нужно сделать, это следующее:

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

Собственно, чтобы использовать задачу <for/>, вам нужно сделать следующее:

<taskdef resource="net/sf/antcontrib/antlib.xml"/>

Обратите внимание, что вы должны использовать antlib.xml, а не antcontrib.properties. Внимательно прочитайте Инструкции по установке. Легко пропустить.

Если вы делаете это в групповом проекте, я рекомендую вам поместить ваш ant -contrib.jar в ваш проект. Затем добавьте их в свой проект в своей системе контроля версий. Таким образом, другие разработчики могут использовать вашу сборку с задачами ant -contrib без загрузки флага ant -contrib и установки его в свою директорию $ANT_HOME.

Скажем, вы создаете каталог под названием ant-contrib.dir и поместите его в корень вашего проекта, а затем помещайте в эту папку банку ant -contrib. Просто поставьте это в свой проект:

<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
          <fileset dir="${basedir}/ant-contrib.dir"/>
    </classpath>
</taskdef>

Ответ 2

Ant должен знать об этой зависимости. Ниже приводится более краткий вариант ответа Дэвида W. Добавьте в проект ant эквивалент следующего содержания:

<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="relative/path/to/ant-contrib-1.0b3.jar"/>
<taskdef resource="net/sf/antcontrib/antlib.xml" classpath="relative/path/to/ant-contrib-1.0b3.jar"/>