2014-09-19 86 views
0

讓我們假設這是我的代碼。 buildJar是我的宏定義。如何使用macrodef?

<target name="build"> 
    <buildJar build.dir="module1"/> 
    <buildJar build.dir="module2"/> 
    </target> 

如何根據某些條件調用macrodef「buildJar」?例如,上面的代碼可以是:

<target name="build"> 
     <if module="module1" > 
      <buildJar build.dir="module1"/> 
     </if> 
     <if module="module2" > 
      <buildJar build.dir="module2"/> 
     </if> 
    </target> 
+0

的答案爲[這個問題](http://stackoverflow.com/q/25864709/127035)給你兩個不錯的選擇。 – sudocode 2014-09-19 07:41:11

回答

0

Ant支持if and unless attributes。這些可以通過目錄檢查使用available task組合:

<project name="demo" default="build" xmlns:if="ant:if"> 

    <macrodef name="greeting"> 
    <attribute name="name"/> 
    <sequential> 
     <echo message="found @{name}"/> 
    </sequential> 
    </macrodef> 

    <available property="found.module1" file="module1"/> 
    <available property="found.module2" file="module2"/> 

    <target name="build"> 
    <greeting name="module1" if:true="${found.module1}"/> 
    <greeting name="module2" if:true="${found.module2}"/> 
    </target> 

</project>