Уважаемый, в настоящее время я сталкиваюсь с некоторой проблемой при получении значения свойства, установленного в цикле foreach. Может быть, один из вас мог бы помочь мне ...
Цель состоит в том, чтобы проверить, был ли изменен один файл папки с момента создания соответствующего jar-файла. Таким образом, я знаю, придется ли мне снова создавать банку.
Что я делаю, так это просматриваю папку с циклом foreach и, если один файл соответствует моему тесту, присваиваем свойству значение true.
Проблема в том, что моя переменная, кажется, не существует после моего цикла ... Вот пример упрощенного кода, который имеет ту же проблему:
<target name="target">
<taskdef resource="net/sf/antcontrib/antlib.xml" classpath="${lib.dir}/ant-contrib.jar"></taskdef>
<foreach target="setVar" param="var" list="a,b"/>
<echo>myreturn in target: ${env.myreturn}</echo>
<property name="env.myreturn" value="c"/>
<echo>myreturn in second: ${env.myreturn}</echo>
</target>
<target name="setVar">
<property name="env.myreturn" value="${var}"/>
<echo>myreturn in setVar: ${env.myreturn}</echo>
</target>
Результат этого кода:
target:
setVar:
[echo] myreturn in setVar: a
setVar:
[echo] myreturn in setVar: b
[echo] myreturn in target: ${env.myreturn}
[echo] myreturn in second: c
BUILD SUCCESSFUL
Кажется, переменная установлена правильно, так как она может быть напечатана в цели "setVar", но нет способа извлечь значение из вызывающей цели.
Я также знаю, что невозможно присвоить значение свойству дважды. Но проблема даже не возникает ... Когда это произойдет, я мог бы добавить проверку значения свойства, прежде чем присвоить его, чтобы убедиться, что оно еще не инициализировано ...
У вас есть подсказка, как я могу решить мою проблему?
Заранее большое спасибо за помощь:)