2010-09-30 23 views
3

Je cherche mon script de construction nant pour pouvoir nettoyer après lui-même si une construction se passe mal. Je cherche quelque chose qui ressemble à l'exécution suivante:Nettoyage après des échecs de construction nant

Target= Software.Build 

Target= Software.Build.Success *(depends on Software.Build succeeding)* 

Target= Software.Build.Failed 

Je suis à la recherche d'une solution que si la cible de Software.Build échoue alors Software.Build.Failed sera exécuté par exemple pour envoyer un e-mail à quelqu'un que la construction a échoué d'une manière ou d'une autre, sinon Software.Build.Success sera exécuté pour permettre au script de construction de continuer.

Est-ce encore possible avec nant? Si oui, quelqu'un pourrait-il me diriger vers un article/une solution convenable?

Répondre

4

NAntContrib a une trycatch task:

<trycatch> 
    <try> 
    <call target="Software.Build" /> 
    </try> 
    <catch> 
    <call target="Software.Build.Failed" /> 
    <fail message="build failed" /> 
    </catch> 
    <finally> 
    <!-- execute everything that doesn't depend on success or failure --> 
    </finally> 
</trycatch> 
<call target="Software.Build.Success" /> 
+0

Merci pour l'exemple succinct! J'ai cherché à écrire ma propre tâche personnalisée pour me permettre d'implémenter une propriété 'callOnError' pour aider à simplifier les scripts de construction, mais comme cela fonctionne, il n'y a probablement pas besoin d'aller trop loin sur une solution plus propre! –

+0

Depuis la version 0.92-rc1 '' fait partie de NAnt elle-même au lieu de NAntContrib –

6

Ou si vous avez des données globales à nettoyer, vous pouvez utiliser l'événement NAnt onFailure.

<property name="nant.onfailure" value="failure" /> 
<target name="failure"> 
    <!-- Put your cleaning code in here --> 
</target>