У меня есть цель, которая запускает задачу, которая задает свойство. Другая цель проверяет это свойство, и если это правда, он снова вызывает первую цель. Но как только первая цель запущена и устанавливает свойство, она никогда не изменяет ее снова! (И я знаю, что это должно быть изменение, потому что я могу видеть состояние арг изменить)Вызов муравьиной цели несколько раз не сбрасывает свойство
(я не могу установить библиотеку вно - не мой выбор - так я застрял делать эту работу вокруг)
<target name="check-service-state">
<!-- See if the service is running or not -->
<exec executable="ssh" outputproperty="service.state" failonerror="false">
<arg value="-t" />
<arg value="-t" />
<arg value="${username}@${ssh.host}" />
<arg value="sudo initctl list | grep ${service.name}" />
</exec>
<condition property="service.running" else="false">
<or>
<contains string="${service.state}" substring="start/running" />
</or>
</condition>
<echo message="${service.running}" />
</target>
<target name="restart-service" depends="stop-service">
<!-- Check if service stopped -->
<antcall target="check-service-state" />
<sleep seconds="1" />
<!-- now try to start again, or wait and recheck -->
<antcall target="service-not-stopped" />
<antcall target="service-stopped" />
</target>
<target name="wait-for-service">
<!-- Check if service stopped -->
<antcall target="check-service-state" />
<!-- now try to start again -->
<antcall target="service-not-stopped" />
<antcall target="service-stopped" />
</target>
<!-- Acts as a loop/wait check for service stopping -->
<target name="service-not-stopped" if="${service.running}">
<echo message="${service.state}" />
<antcall target="wait-for-service" />
</target>
<!-- Acts as a break from the loop/check for service stopping -->
<target name="service-stopped" unless="${service.running}">
<antcall target="start-service" />
</target>
свойство service.running
изменяется только один раз, а затем всегда остается правдой, хотя теперь оно должно быть ложным.
И это будет работать в Ant (1.9.6) без вно? –
@DonRhummy Зависит больше от вашей JVM. Javascript (Rhino) был связан с Java6, Java8 имеет новый механизм Javascript под названием Nashorn. –