我试图将一个属性用作多个其他属性的模板,但它只在第一次工作。通过示例可能最容易展示,因此我将代码缩减为展示此行为的最小案例:
<target name="test">
<property name="individual.template" value="x@ID@"/>
<propertyregex property="individual.1" input="${individual.template}" regexp="\@ID\@" replace="1" global="true" override="true"/>
<echo>====== ${individual.1} ::: ${individual.template}</echo>
<propertyregex property="individual.2" input="${individial.template}" regexp="\@ID\@" replace="2" global="true" override="true"/>
<echo>====== ${individual.2} ::: ${individual.template}</echo>
<propertyregex property="individual.3" input="${individial.template}" regexp="\@ID\@" replace="3" global="true" override="true"/>
<echo>====== ${individual.3} ::: ${individual.template}</echo>
<propertyregex property="individual.4" input="${individial.template}" regexp="\@ID\@" replace="4" global="true" override="true"/>
<echo>====== ${individual.4} ::: ${individual.template}</echo>
<propertyregex property="individual.5" input="${individial.template}" regexp="\@ID\@" replace="5" global="true" override="true"/>
<echo>====== ${individual.5} ::: ${individual.template}</echo>
</target>
我希望这会输出 x1、x2 等,但它会输出以下内容:
[echo] ====== x1 ::: x@ID@
[echo] ====== ${individual.2} ::: x@ID@
[echo] ====== ${individual.3} ::: x@ID@
[echo] ====== ${individual.4} ::: x@ID@
[echo] ====== ${individual.5} ::: x@ID@
如您所见,第一个没问题,但下一个属性根本没有设置。起初我以为模板属性被修改了,但是从输出中可以看出,事实并非如此。我只是在这里做一些愚蠢的事情吗?这不支持吗?或者它是一个错误?任何想法将不胜感激。
(Ant 版本 1.8.2,ant-contrib 版本 1.0b2)。