Предлагаем взглянуть на расширения, доступные в ant-contrib задачах.
Задача 'for' может быть адаптирована к вашим требованиям.
Ваша цель «все релизы» с заданием ant-contrib task может выглядеть следующим образом:
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="lib/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<target name="all-release">
<for keepgoing="true" param="file">
<path>
<fileset dir="." includes="*/build.xml" />
</path>
<sequential>
<ant antfile="@{file}" target="sub-release" />
</sequential>
</for>
</target>
Используя некоторые другие функции ant-contrib, можно получить список сбоев.
Пример журнала сверху build.xml:
$ ant all-release
Buildfile: build.xml
all-release:
[echo] /work/Scratch/dir1/build.xml
sub-release:
[echo] dir1
[echo] /work/Scratch/dir2/build.xml
sub-release:
[echo] dir2
[for] /work/Scratch/dir2/build.xml: The following error occurred while executing this line:
[for] /work/Scratch/build.xml:17: The following error occurred while executing this line:
[for] /work/Scratch/dir2/build.xml:6: dir2 failed
[echo] /work/Scratch/dir3/build.xml
sub-release:
[echo] dir3
BUILD FAILED
/work/Scratch/build.xml:11: Keepgoing execution: 1 of 3 iterations failed.
Total time: 0 seconds