Ant 如何使用macrodef?

Ant 如何使用macrodef?,ant,antlr,Ant,Antlr,假设这是我的代码。buildJar是我的宏定义 <target name="build"> <buildJar build.dir="module1"/> <buildJar build.dir="module2"/> </target> 如何根据某些条件调用macrodef buildJar?例如,上述代码可以是: <target name="build"> <i

假设这是我的代码。buildJar是我的宏定义

    <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>
蚂蚁支持。这些可以与目录检查结合使用:

答案给了你两个很好的选择。
<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>