2010-12-07 14 views
6

Mon exigence est que, en utilisant waitfor condition, la fourmi devrait vérifier périodiquement si la chaîne "Build Successful" est affichée dans le fichier journal. Si la chaîne est trouvée, une action particulière doit être effectuée.En utilisant ant, vérifiez si une chaîne particulière est trouvée dans un fichier

+0

Que faire si la chaîne n'est pas trouvée? Devrait-il y avoir un timeout? –

+0

si la chaîne n'est pas trouvée jusqu'à un délai d'attente spécifié, un message d'erreur doit s'afficher –

Répondre

6

Voici un exemple d'une manière que vous pourriez faire ceci:

<target name="wait-for"> 
    <waitfor maxwait="15" maxwaitunit="second" timeoutproperty="build.timeout"> 
     <resourcecontains resource="build.log" substring="Build Successful" /> 
    </waitfor> 
    <antcall target="build-success" /> 
</target> 

<target name="build-success" depends="build-fail" unless="build.timeout"> 
    <echo message="Success" /> 
</target> 
<target name="build-fail" if="build.timeout"> 
    <echo message="Fail" /> 
</target> 

Utilisez la condition resourcecontains pour rechercher la chaîne dans la ressource nommée - dans ce cas, le fichier « build.log ». S'il n'est pas trouvé dans le délai imparti, la propriété build.timeout est définie. Il y a deux cibles, une qui doit être exécutée si la chaîne est trouvée, l'autre sinon. Les 'target' attributesif, unless, et depends sont utilisés pour faire le besoin logique d'if-else. Si vous avez seulement besoin de prendre une action en cas de succès ou échec, vous pouvez simplifier légèrement.

+0

Cela a fonctionné. Merci beaucoup –

+0

Puis-je utiliser regex dans l'attribut substring de resourcecontains? –