2010-12-07 9 views
6

Mi requisito es que, usando la condición de espera, la hormiga debe verificar periódicamente si la cadena "Construir con éxito" se muestra en el archivo de registro. Si se encuentra la cadena, entonces se debe realizar una acción particular.Usando hormiga, compruebe si se encuentra una cadena en particular en un archivo

+0

¿Qué pasa si la cadena no se encuentra? ¿Debería haber un tiempo de espera? –

+0

si la cadena no se encuentra hasta un período de tiempo de espera especificado, entonces se debe mostrar algún mensaje de error –

Respuesta

6

He aquí un ejemplo de una forma que podría hacer esto:

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

Utilice la condición resourcecontains a buscar la cadena en el recurso con nombre - en este caso el 'build.log' archivo. Si no se encuentra en el tiempo asignado, se establece la propiedad build.timeout. Hay dos objetivos, uno que se ejecutará si se encuentra la cadena y el otro si no. El 'target' attributesif, unless y depends se utilizan para hacer que la lógica if-else sea necesaria. Si solo necesita realizar una acción en el caso de éxito o falla, puede simplificar levemente.

+0

Funcionó. Muchas gracias –

+0

¿Puedo usar regex en el atributo de subcadena de resourcecontains? –

Cuestiones relacionadas