У меня есть filelist
, который содержит список каталогов. Мне нужно перебрать этот filelist
, получить файл из каждого каталога и скопировать его в другое место.
Я пытался использовать filelist
в сочетании с foreach
, но foreach
не поддерживает filelist
. Есть ли другой способ сделать это в ANT?
Моя попытка с for
.
Ошибка при выполнении задачи <copy>
о том, что она не может найти каталог. Каталог, который он ищет, это ${basedir}/bin/
вместо каталога, который впервые указан в filelist
, который ему дан. Я предполагаю, что это потому, что он неправильно читает мой filelist
. Моя foreach
версия выдает ту же ошибку.
<for
list="devBuild"
delimiter=","
param="dirName"
trim="true">
<sequential>
<copy
todir="./apks/"
failonerror="true"
verbose="true">
<fileset dir="@{dirName}/../bin/">
<include name="*/*.apk"/>
</fileset>
</copy>
</sequential>
</for>
Частично работает
Прямо сейчас, цикл for
работает ... вроде. То, как я хочу, чтобы это работало, показано ниже. Тем не менее, это не означает, что ссылка devBuild
не найдена. Однако этот filelist
создан ранее в другом target
и создан с этой ссылкой. Почему я не могу использовать этот ссылочный идентификатор в другой цели?
<for
delimiter=","
param="dirName"
trim="true">
<path>
<filelist
refid="devBuild"></filelist>
</path>
<sequential>
<echo>@{dirName}</echo>
<copy
todir="./apks/"
failonerror="true"
verbose="true">
<fileset dir="@{dirName}/../bin/">
<include name="*/*.apk"/>
</fileset>
</copy>
</sequential>
</for>
Следующий способ работает, но я хотел бы использовать ссылочный идентификатор вместо создания filelist
снова.
<for
delimiter=","
param="dirName"
trim="true">
<path>
<filelist
id="devBuild"
dir="${basedir}"
files="${build1},${build2},${build3},${build4}"
/>
</path>
<sequential>
<echo>@{dirName}</echo>
<copy
todir="./apks/"
failonerror="true"
verbose="true">
<fileset dir="@{dirName}/../bin/">
<include name="*/*.apk"/>
</fileset>
</copy>
</sequential>
</for>