Voici une façon d'obtenir la même chose - mais en définissant la liste de fichiers avant la concaténation, et en vérifiant si les fichiers sont présents.
Aperçu:
- Créer une liste de fichiers avec un identifiant.
- Créez un groupe de fichiers similaire à partir de la même liste de fichiers.
- Obtenez le nombre de ressources dans chacun de ces - ensembles de fichiers seulement sélectionner les fichiers qui existent.
- Comparez les comptes de ressources - s'ils diffèrent, certains fichiers n'existent pas.
Un fail
task avec condition incorporé est utilisé pour comparer les comptes. Si cela passe, la concat est effectuée.
<filelist id="my.list" dir="." files="${filelist}" />
<fileset id="my.set" dir="." includes="${filelist}" />
<resourcecount refid="my.list" property="my.list.size" />
<resourcecount refid="my.set" property="my.set.size" />
<fail message="Only found ${my.set.size}/${my.list.size} files for concat!">
<condition>
<not>
<equals arg1="${my.set.size}" arg2="${my.list.size}" />
</not>
</condition>
</fail>
<concat destfile="${destFile}" fixlastline="yes">
<filelist refid="my.list" />
</concat>
Pour obtenir la liste des fichiers manquants, utilisez quelque chose comme:
<difference id="missing">
<resources refid="my.list"/>
<resources refid="my.set"/>
</difference>
Ensuite, vous pouvez réviser la tâche fail
à:
<fail message="Missing files for concat: ${ant.refid:missing}">
Merci! Est-il possible d'être plus informatif (par exemple, en imprimant la liste des fichiers manquants), etc.? – BreakPhreak
Oui, voir révisé. –