Тег Ant «exec» выводит значение свойства, не изменяющееся при вызове «макродефекта» из целевого объекта дважды

#ant

Вопрос:

 <macrodef>
<if>
    <then>
        <exec  executable="python" failonerror="true" outputproperty="result">
        </exec>
    </then>
<else>
        <exec  executable="python" failonerror="true" outputproperty="result">
</else>
</if> </macrodef>
 

У меня есть блок кода macrodef , который вызывается дважды, но когда он вызывается во второй раз, свойство «результат» в свойстве outputproperty содержит старое значение и не заменяется новым значением, я новичок в ant, был бы признателен за обходной путь ..например, если есть альтернатива для использования, отличная от свойства ant

Комментарии:

1. Свойства в Ant неизменяемы: после установки в первом исполняемом файле они не могут быть изменены. Возможно, вы могли бы использовать выходной параметр (помещает выходные данные в файл) вместо этого.

Ответ №1:

Используя https://ant.apache.org/manual/Tasks/local.html решил проблему для меня, так как свойство, определенное с помощью local, находится в области действия тега.

Что-то вроде этого

 <sequential>
    <local name="foo"/>
    <property name="foo" value="bar.2"/>
    <echo>Second sequential: foo is ${foo}</echo>
</sequential>