Я знаю, что это старая версия, но она может пригодиться другим, ищущим решение.
чтобы переназначить свойство без использования ant-contrib, используйте macrodef со скриптом.
<macrodef name="property-change">
<attribute name="name"/>
<attribute name="value"/>
<sequential>
<script language="javascript"><![CDATA[
project.setProperty("@{name}", "@{value}");
]]></script>
</sequential>
</macrodef>
затем в любом месте муравья, просто назовите это как тег свойства
<property-change name="giv" value="John"/>
Чтобы реализовать это в исходной версии XML, это будет выглядеть так:
<project name="Friend" default="ifthen" basedir=".">
<property name="runningLocation" location="" />
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="${runningLocation}/antlib/ant-contrib-1.0b3.jar" />
</classpath>
</taskdef>
<target name="ifthen">
<echo message="input name: ${giv}" />
<if>
<equals arg1="${giv}" arg2="Mark" />
<then>
</then>
<else>
<property-change name="giv" value="John" />
</else>
</if>
<echo message="should be overwritten with John except for Mark: ${giv}" />
</target>
</project>
Этот пример приведен исключительно в качестве примера при написании макроса для замены команды в ant-contrib. В такой ситуации, когда используется команда , имеет смысл использовать sinnce ant-contrib уже загружен, и может быть быстрее при обработке.
Надеюсь, это поможет.