ANT: использование условных тегов <IF>
Я хотел бы сделать что-то вроде этого
<target name="clean" description="clean">
<if>
<available file="${build}" type="dir" />
<then>
<delete dir="${build}" />
</then>
</if>
</target>
В соответствии с предложениями, найденными на stackoverflow.com, я загрузил ant -contrib-1.0b3.jar и поместил его в мой путь
![Classpath]()
Кроме того, в разделе Ant Конфигурация сборки, в classpath, у меня есть
![enter image description here]()
При запуске my Ant script я все равно получаю
BUILD FAILED
C:\Repositories\blah\build.xml:60: Problem: failed to create task or type if
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.
Что мне не хватает? Просьба сообщить
Ответы
Ответ 1
В качестве альтернативы, один раз можно включить следующую строку в ANT script
<taskdef resource="net/sf/antcontrib/antlib.xml" />
Пока ant-contribs
находится на вашем пути, больше ничего не требуется
Это решение немного чище, поскольку один получает доступ ко всем тегам, а не только к указанным вручную
Ответ 2
Такая же проблема решена таким образом.
Я положил в начало XML файла buid следующие строки:
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="your/path/to/ant-contrib-${version}.jar" />
</classpath>
</taskdef>
Ответ 3
Стандартный способ ant - это что-то вроде =
<target name="check">
<condition property="delbuild">
<available file="${build}" type="dir"/>
</condition>
</target>
<target name="delbuild" depends="check" if="delbuild">
<delete dir="${build}"/>
<!-- .. -->
</target>
Отрывок с Ant Плагин Flaka, недавняя альтернатива antcontrib. Установка в Eclipse как обычно через | Настройки | ant | Время выполнения | Глобальные заявки | ant -flaka-1.02.-1.02.jar=
<project xmlns:fl="antlib:it.haefelinger.flaka">
<!-- some standalone if construct -->
<fl:when test=" '${build}'.isdir ">
<delete dir="${build}"/>
</fl:when>
<!-- some if/then/else construct -->
<fl:choose>
<!-- if -->
<when test=" '${buildtype}' eq 'prod' ">
<!-- then -->
<echo>..starting ProductionBuild</echo>
</when>
<when test=" '${buildtype}' eq 'test' ">
<!-- then -->
<echo>..starting TestBuild</echo>
</when>
<!-- else -->
<otherwise>
<fl:unless test="has.property.dummybuild">
<fail message="No valid buildtype !, found => '${buildtype}'"/>
</fl:unless>
<echo>.. is DummyBuild</echo>
</otherwise>
</fl:choose>
</project>
с ant -f build.xml -Dbuildtype = prod или
ant -f build.xml -Dbuildtype = prod -Ddummybuild = whatever
[echo] ..starting ProductionBuild
вывод с typo = > ant - build.xml -Dbuildtype = testt
BUILD FAILED
/home/rosebud/workspace/AntTest/build.xml:21: No valid buildtype !, found => 'testt'
с ant -f build.xml -Ddummybuild = whatever
[echo] .. is DummyBuild
Ответ 4
У меня такая же проблема. Я решил следующим образом.
Иногда это может быть проблема совместимости.
- Щелкните правой кнопкой мыши на файле build.xml.
- Перейдите в раздел "Запустить как" → 2 Ant... Выберите вкладку "Проверка класса" Ant Домашняя версия (иногда eclipse выбирает версию по умолчанию Ant).
- Если указанная версия отличается от другой, измените Ant Home Classpath
к C:\XXXX\ ant\X.X.X.
- Наконец, нажмите "Пользовательские записи" → Добавить внешние JARS..-- > добавить
ant -contrib.x.x.jar форма C:\XXXX\ant\X.X.X\ant -contrib\directory.
Ответ 5
На вкладке задач для Ant Runtime вы видите задачу "if"?