0

这是一小段代码,请看一下,然后按照说明进行操作....

    <condition property="${param1}">
            <or>
                <istrue value="win-x86"/>
                <istrue value= "win-x86-client"/>
                <istrue value= "win-x64"/>
            </or>
     </condition>
    <target name="Mytarget" if="${param1}">
        <echo message="executing windows family build:::${param1}"/>
    </target>
<target name="print.name" >
    <antcall target="win-x86-build">
       <param name="param1" value="${platform.id}"/>
    </antcall>
</target>

我希望当 platform.id 包含任何 Windows 系列名称时,它应该打印该消息EXECUTING WINDOWS FAMILY BUILD,但问题是即使该系列是 unix,它也会打印此消息。

我认为要么我没有正确检查条件,要么我犯了其他错误。
有人可以帮我解决这个问题吗?

4

3 回答 3

4

看起来您误解了Condition Task

property:要设置的属性的名称。

尝试使用Conditionos

测试当前操作系统是否属于给定类型。

于 2012-05-21T07:44:19.073 回答
3

从 ant 1.9.1 开始,您可以这样做:

<project name="tryit" xmlns:if="ant:if" xmlns:unless="ant:unless">
   <exec executable="java">
     <arg line="-X" if:true="${showextendedparams}"/>
     <arg line="-version" unless:true="${showextendedparams}"/>
   </exec>
   <condition property="onmac">
     <os family="mac"/>
   </condition>
   <echo if:set="onmac">running on MacOS</echo>
   <echo unless:set="onmac">not running on MacOS</echo>
</project>
于 2016-01-13T10:57:01.650 回答
2

Peter 试图解释您必须明确指定属性名称。请尝试以下操作以使您的代码正常工作:

<project name="demo" default="Mytarget">

    <condition property="windoze">
        <or>
            <equals arg1="${param1}" arg2="win-x86"/>
            <equals arg1="${param1}" arg2="win-x86-client"/>
            <equals arg1="${param1}" arg2="win-x64"/>
        </or>
    </condition>

    <target name="Mytarget" if="windoze">
        <echo message="executing windows family build:::${param1}"/>
    </target>

</project>

更好的解决方案是利用内置于 ANT条件任务中的操作系统测试。

<project name="demo" default="Mytarget">

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

    <target name="Mytarget" if="windoze">
        <echo message="executing windows family build:::${os.name}-${os.arch}-${os.version}"/>
    </target>

</project>
于 2012-05-21T18:49:09.563 回答