【问题标题】:Ant build.xml $$Ant build.xml $$
【发布时间】:2014-03-13 18:16:25
【问题描述】:

我有一个 Ant build.xml 进行如下检查,我只是想知道 $$ 表示什么?

提前感谢您的帮助。

 <equals casesensitive="false" arg1="${subPlan}" arg2="$${subPlan}"/>

【问题讨论】:

    标签: ant build


    【解决方案1】:

    来自蚂蚁手册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>
    

    【讨论】:

      猜你喜欢
      • 2012-07-31
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 2013-10-24
      相关资源
      最近更新 更多