如何在ant中使用condition元素来设置另一个属性?

时间:2011-08-03 13:55:53

标签: java ant

我有一个与ant一起使用的build.xml,我正试图在目标中设置一个条件:

首先,我在这里设置了可以正常工作的属性:

<condition property="isWindows">
    <os family="windows"/>
</condition>

然后我尝试在目标中使用它:

<target name="-post-jar">
    <condition property="isWindows" value="true">
         <!-- set this property, only if isWindows set -->
         <property name="launch4j.dir" location="launch4j" />
    </condition>

    <!-- Continue doing things, regardless of property -->
    <move file="${dist.jar.dir}" tofile="myFile"/>
    <!-- etc -->
</target>

我收到错误:“条件不支持嵌套的”property“元素。” 问题是:如何在目标中正确放置条件,为什么错误引用'嵌套'属性?

2 个答案:

答案 0 :(得分:3)

condition用于定义属性,但不能基于属性值执行某些操作。

使用target with if or unless attribute根据属性值执行某些任务。

答案 1 :(得分:0)

condition的条件嵌套在condition元素内。

使用property属性指定要设置的属性,使用value元素上的condition属性指定满足条件时的值。此外,您可以使用else属性为不满足条件的属性设置值。

要检查属性是否设置为condition的条件,请使用isset

<condition property="isWindows">
    <os family="windows"/>
</condition>   

<target name="-post-jar">
    <!--Only set property if isWindows -->
    <condition property="launch4j.dir" value="launch4j">
         <isset property="isWindows"/>
    </condition>

    <!-- Continue doing things, regardless of property -->
    <move file="${dist.jar.dir}" tofile="myFile"/>
    <!-- etc -->
</target>