属性设置为false,但目标仍然执行

时间:2010-04-27 08:25:08

标签: ant

这是一个简单的Ant构建文件:

<?xml version="1.0" encoding="UTF-8"?>
<project name="Project" default="build" basedir=".">
    <property name="compressAssets" value="false"/>

    <target name="build" depends="compress-assets"/>
    <target name="compress-assets" if="compressAssets">
        <echo message="executed"/>
    </target>
</project>

compressAssets设置为false,那么每次compress-assets目标的执行方式如何?请注意目标上的if属性。

2 个答案:

答案 0 :(得分:6)

if不会检查属性的值,它会检查属性是否已设置。


来自documentation

<target name="build-module-A" if="module-A-present"/>
  

[...]如果module-A-present属性设置(任何值,例如 false ),目标将会运行。

答案 1 :(得分:5)

在Ant 1.8中,if现在检查该值是否为真(unless检查为false),所以你可以这样做:

<target name="blah" if="${do-blah}">
    .
    .
    .
</target>