Para validar un archivo con un ejecutable. Tengo un objetivo de script de hormiga como:

<target name="xtest" depends="xyz" description="Additional check">
    <exec executable="${xtest.exe}" failonerror="true" resultproperty="retVal">
        <arg value="${inputfile.dat}" />
    </exec>
    <echo>Returned: ${retVal}</echo>
</target>

Salida en consola:

xtest:
     [exec] Errors:          3
     [exec] Warnings:        1
     [exec] Infos:           0
     [exec] Total:           4
     [echo] Returned: 0

El código de salida (${retVal}) del ejecutable es 0 incluso si detecta un error. Quiero terminar el proceso si los errores son más de 0.

¿Cómo puedo leer la primera línea de salida ([exec] Errors: 3) y analizar el valor que es 3 en el ejemplo anterior y terminar el proceso?

0
Prem 16 oct. 2018 a las 14:31

2 respuestas

La mejor respuesta

Trabajó exactamente con el código a continuación. ¡Gracias!

<target name="xtest" depends="xyz" description="Additional check">
    <exec executable="${xtest.exe}" failonerror="true" resultproperty="retVal" output="output.txt">
        <arg value="${inputfile.dat}" />
    </exec>
    <echo>Returned: ${retVal}</echo>
    <property file="output.txt" prefix="xtestoutput"/>
    <fail>
        <condition>
          <not>
            <equals arg1="${xtestoutput.Errors}" arg2="0" />
          </not>
        </condition>
    </fail>
</target>
0
Prem 23 oct. 2018 a las 06:15

Usando resultproperty puede redirigir la salida de su ejecutable a un archivo. Luego, dado que la salida coincide con el formato del archivo de propiedades, puede leer ese archivo de salida y usar las propiedades en él como:

<target name="xtest" depends="xyz" description="Additional check">
    <exec executable="${xtest.exe}" failonerror="true" resultproperty="retVal" output="output.txt">
        <arg value="${inputfile.dat}" />
    </exec>
    <echo>Returned: ${retVal}</echo>
    <property file="output.txt" prefix="xtestoutput"/>
    <fail>
        <condition>
            <not>
                <equals arg1="${xtestoutput.Errors}" arg2="0" />
            </not>
        </condition>
    </fail>
</target>
0
guleryuz 23 oct. 2018 a las 08:34