【发布时间】:2014-03-13 18:16:25
【问题描述】:
我有一个 Ant build.xml 进行如下检查,我只是想知道 $$ 表示什么?
提前感谢您的帮助。
<equals casesensitive="false" arg1="${subPlan}" arg2="$${subPlan}"/>
【问题讨论】:
我有一个 Ant build.xml 进行如下检查,我只是想知道 $$ 表示什么?
提前感谢您的帮助。
<equals casesensitive="false" arg1="${subPlan}" arg2="$${subPlan}"/>
【问题讨论】:
来自蚂蚁手册Properties and PropertyHelpers:
..Ant will expand the text $$ to a single $ and suppress the normal property expansion mechanism..
它通常用于这样的输出:
<property name="foo" value="bar"/>
<echo>$${foo} => ${foo}</echo>
输出:
[echo] ${foo} => bar
在您的情况下,它会检查您的项目中是否设置了名为 subPlan 的属性,因为如果 ${subPlan} 不存在,则不会扩展它,例如:
<project>
<property name="subPlan" value="whatever"/>
<echo>${subPlan}</echo>
</project>
输出:
[echo] whatever
而:
<project>
<echo>${subPlan}</echo>
</project>
输出:
[echo] ${subPlan}
实际上可以将 Property subPlan 的 propertyvalue 设置为 ${subPlan} :
<property name="subPlan" value="$${subPlan}"/>
但这没有意义,所以你的 sn-p 做了一个组合检查 => 是否设置了 Property subPlan 并具有有用的价值?可以这样使用:
<fail message="Property not set or invalid value !">
<condition>
<equals casesensitive="false" arg1="${subPlan}" arg2="$${subPlan}"/>
</condition>
</fail>
最后,检查属性是否设置的标准方法是使用isset condition, f.e. :
<fail message="Property not set !">
<condition>
<not>
<isset property="subPlan"/>
</not>
</condition>
</fail>
【讨论】: