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.
Что здесь отсутствует?
Ответы
Ответ 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"/>