2012-02-06 2 views
3
<concat destfile="${destFile}" fixlastline="yes"> 
    <filelist dir="." files="${filelist}"/> 
</concat> 

Dans le fragment ci-dessus, je voudrais concat tâche d'échouer lorsqu'un fichier de filelist n'est pas accessible/localisé. Quelle serait la meilleure façon de le mettre en œuvre s'il vous plaît?Comment faire une tâche concat échouer en cas d'erreur?

Répondre

4

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}"> 
+0

Merci! Est-il possible d'être plus informatif (par exemple, en imprimant la liste des fichiers manquants), etc.? – BreakPhreak

+0

Oui, voir révisé. –

Questions connexes