Задача:
В билдфайле ant над каждым файлом из набора (заданного с помощью <fileset/>) выполнить некоторое действие или последовательность действий.
Решение:
Один из вариантов - воспользоваться библиотекой Ant-Contrib (скачать её, а также почитать документацию можно тут: http://ant-contrib.sourceforge.net/, я использовал версию 0.6). Она предоставляет задачу <foreach/>, позволяющую задать набор файлов вложенным элементом <path/> и вызвать для каждого файла указанную цель, передав ей имя файла в качестве параметра. Вот небольшой пример:
<taskdef name="foreach" classname="net.sf.antcontrib.logic.ForEach"Здесь foreach проходит по всем jar-файлам из базовой директории, и для каждого вызывает цель "mytarget", передавая ей абсолютный путь к файлу через параметр "myfile".
classpath="path/to/ant-contrib-0.6.jar"/>
<target ...>
<foreach target="mytarget" param="myfile">
<path>
<fileset dir="${basedir}">
<include name="*.jar"/>
</fileset>
</path>
</foreach>
</target>
<target name="mytarget">
<echo message="filename is ${myfile}" />
</target>
PS В принципе, в ant есть встроенная задача <apply/>, но она умеет выполнять для каждого файла из набора только внешние команды, а не внутренние цели.
Комментариев нет:
Отправить комментарий