1

我试图将一个属性用作多个其他属性的模板,但它只在第一次工作。通过示例可能最容易展示,因此我将代码缩减为展示此行为的最小案例:

<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)。

4

2 回答 2

3

这只是一个错字:(individ i al) vs. (individ u al)

于 2011-12-20T21:33:29.670 回答
2

@thor84no,我在测试用例中看到一个复制/粘贴错误:您不应该打印值 ofindividual.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
于 2011-12-20T19:25:47.913 回答