Мне нужно написать цель Ant, которая добавляет (разделенный запятыми) список имен файлов «.jar» из папки в переменную, которая позже используется в качестве входных данных для внешней утилиты.
Я сталкиваюсь с барьерами охвата и неизменности. У меня есть доступ к ant-contrib, но, к сожалению, версия, с которой я застрял, не имеет доступа к задаче 'for'. Вот что у меня есть:
<target name="getPrependJars">
<var name="prependJars" value="" />
<foreach param="file" target="appendJarPath">
<path>
<fileset dir="${project.name}/hotfixes">
<include name="*.jar"/>
</fileset>
</path>
</foreach>
<echo message="result ${prependJars}" />
</target>
<target name="appendJarPath">
<if>
<equals arg1="${prependJars}" arg2="" />
<then>
<var name="prependJars" value="-prependJars ${file}" />
</then>
<else>
<var name="prependJars" value="${prependJars},${file}" />
</else>
</if>
</target>
Кажется, что 'appendJarPath' изменяет только 'prependJars' в пределах своей области видимости. В качестве теста я попытался использовать 'antcallback', который работает для одного целевого вызова, но не очень мне помогает с моим списком файлов.
Я понимаю, что я немного работаю против зерна, и в большинстве случаев желательна лексическая область применения, но я действительно хотел бы заставить это работать так или иначе. У кого-нибудь есть креативные идеи для решения этой проблемы?