2010-12-07 5 views
6

Meine Anforderung ist, dass ameise mit der Bedingung waitfor in regelmäßigen Abständen prüfen sollte, ob die Zeichenfolge "Build Successful" in der Protokolldatei angezeigt wird. Wenn die Zeichenfolge gefunden wird, sollte eine bestimmte Aktion ausgeführt werden.Mit ant, überprüfen Sie, ob eine bestimmte Zeichenfolge in einer Datei gefunden wird

+0

Was passiert, wenn die Zeichenfolge nicht gefunden wird? Sollte es eine Auszeit geben? –

+0

Wenn die Zeichenfolge bis zu einer bestimmten Zeitüberschreitung nicht gefunden wird, sollte eine Fehlermeldung angezeigt werden. –

Antwort

6

Hier ist ein Beispiel für eine Art und Weise Sie dies tun könnte:

<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> 

Verwenden Sie den resourcecontains Zustand in der genannten Ressource für die Zeichenfolge suchen - in diesem Fall die Datei ‚build.log‘. Wenn es in der zugewiesenen Zeit nicht gefunden wird, wird die build.timeout Eigenschaft festgelegt. Es gibt zwei Ziele, eines, das ausgeführt werden soll wenn die Zeichenfolge gefunden wird, das andere wenn nicht. Die 'target' attributesif, unless und depends werden verwendet, um die if-else-Logik zu benötigen. Wenn Sie nur im Erfolgsfall oder einen Fehler machen müssen, können Sie dies leicht vereinfachen.

+0

Es hat funktioniert. Vielen Dank –

+0

Kann ich Regex im Teilstring-Attribut von resourcescontains verwenden? –

Verwandte Themen