如何解释这个ant构建文件?

时间:2015-05-25 06:33:01

标签: android ant

我使用android.bat为我的android项目创建了ant build.xml。

现在我在build.xml中找到了这些代码:

<!-- if sdk.dir was not set from one of the property file, then
     get it from the ANDROID_HOME env var.
     This must be done before we load project.properties since
     the proguard config can use sdk.dir -->
<property environment="env" />
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
    <isset property="env.ANDROID_HOME" />
</condition>

但我认为此代码表示如果设置env.ANDROID_HOME,则sdk.dir将为${env.ANDROID_HOME}。该代码如何检查sdk.dir是否已设置?

为什么要投票?在Apache Ant用户手册中:

  

如果条件成立,则默认情况下属性值设置为true;否则,该属性未设置。您可以通过指定value属性将值设置为默认值以外的值。

它只表示根据条件的结果将属性设置为某个值。我无法理解:If the property is set , the condition won't work

1 个答案:

答案 0 :(得分:1)

在Ant属性中immutable除非您使用local范围。

因此,如果在属性文件之前设置了sdk.dir,那么条件中的第二个赋值将被忽略。

您可以运行ant -verbose来查看正在发生的事情。