我试图使用一个属性作为多个其他属性的模板,但它只在第一次工作。这可能是最容易通过示例来展示的,因此我将代码减少到显示此行为的最小情况:
<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@
正如您所看到的,第一个属性没有问题,但下一个属性根本没有设置。一开始我以为模板属性被修改了,但是从输出中可以看到,事实并非如此。我是不是做了什么傻事?不支持这个吗?还是一个bug?如有任何意见,不胜感激。
(Ant版本1.8.2,Ant -contrib版本1.0b2)。
这只是笔误:(个体所我 al)与(个体所 u al)
@thor84no,我在测试用例中看到一个复制/粘贴错误:您不应该打印individual.1/individual.2/individual.3/individual.4/individual.5
而不是individual.template
的值吗?我在本地进行了这些更改,输出是您所期望的:
test:
[echo] ====== x1 ::: x1
[echo] ====== x2 ::: x2
[echo] ====== x3 ::: x3
[echo] ====== x4 ::: x4
[echo] ====== x5 ::: x5