Как читать и обрабатывать значения stdout в ant-exec? - PullRequest
0 голосов
/ 16 октября 2018

Для проверки файла с помощью исполняемого файла.У меня есть цель сценария ant как:

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

Вывод на консоль:

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

Код выхода (${retVal}) исполняемого файла 0, даже если он обнаруживает ошибку.Я хочу прервать процесс, если количество ошибок превышает 0.

Как прочитать первую выходную строку ([exec] Errors: 3), проанализировать значение, равное 3 в приведенном выше примере, и завершить процесс?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Работает именно с кодом ниже.Спасибо!

<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 голосов
/ 20 октября 2018

используя resultproperty вы можете перенаправить вывод вашего исполняемого файла в файл.Затем, поскольку выходные данные соответствуют формату файла свойств, вы можете прочитать этот выходной файл и использовать свойства в нем, например:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...