2010-11-03 48 views
7

问题蚂蚁条件 - 这是第一位的“如果”或“除非”

如果Ant目标同时使用如果除非,这是第一个评价?

什么是要先有鸡还是先有蛋? 。 。 。

<target name="prepare" if="chicken" unless="egg" > 
    <echo>Dinner time. Chicken is served!</echo> 
</target> 

蚂蚁会先评估鸡产?还是鸡蛋属性​​?

回答

9

这不是一个真正的评估问题,因为在目标被调用之前属性或者没有设置。

编辑:我看了看1.8.1源和逻辑如下:

if (!testIfAllows()) { 
    project.log(this, "Skipped because property '" + project.replaceProperties(ifCondition) 
      + "' not set.", Project.MSG_VERBOSE); 
    return; 
} 
if (!testUnlessAllows()) { 
    project.log(this, "Skipped because property '" 
      + project.replaceProperties(unlessCondition) + "' set.", Project.MSG_VERBOSE); 
    return; 
} 

所以unless并不重要,除非if通行证。但请记住,这些与评估属性无关。它只是看着他们,看看他们是否设置。

+0

相关类是[org.apache.tools.ant.Target](http://svn.apache.org/repos/asf/ant/core/tags/ANT_181/src/main/org/apache/tools /ant/Target.java) – 2014-01-13 12:35:42