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

条件タスクを誤解したようです:

property:設定するプロパティの名前。

条件osを使用してみてください:

現在のオペレーティングシステムが特定の種類であるかどうかをテストします。

于 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 に答える