我有一个与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“元素。” 问题是:如何在目标中正确放置条件,为什么错误引用'嵌套'属性?
答案 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>