2010-03-22 7 views
1

Je veux être en mesure d'avoir des cibles différentes qui font à peu près la même chose, comme si:Comment macro-ify fourmi des cibles?

ant build <- this would be a normal (default) build 
ant safari <- building the safari target. 

Les cibles se présentent comme suit:

<target name="build" depends="javac" description="GWT compile to JavaScript"> 
    <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"> 
    <classpath> 
     <pathelement location="src"/> 
     <path refid="project.class.path"/> 
    </classpath> 
    <jvmarg value="-Xmx256M"/> 
    <arg value="${lhs.target}"/> 
    </java> 
</target> 

<target name="safari" depends="javac" description="GWT compile to Safari/JavaScript"> 
    <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"> 
    <classpath> 
     <pathelement location="src"/> 
     <path refid="project.class.path"/> 
    </classpath> 
    <jvmarg value="-Xmx256M"/> 
    <arg value="${lhs.safari.target}"/> 
    </java> 
</target> 

(Passons sur la première pensée qui frappe: JETEZ Ce n'est pas encore une option.) J'ai essayé d'utiliser macrodef, mais j'ai reçu un message d'erreur étrange (même si le message ne l'impliquait pas, il pensait qu'il s'agissait de mettre une cible en séquentiel). Je ne veux pas écrire un cmdline comme suit: ant -Dwhatever=nevermind. Des idées?

+2

Le * étrange message d'erreur * aiderait, ainsi que votre tir à 'macrodef'. –

Répondre

3

Mon premier essai (sans être en mesure de le tester pour le moment):

<target name="build" depends="javac, create.mymacro" description="GWT compile to JavaScript"> 
    <mymacro target="${lhs.target}"/> 
</target> 

<target name="safari" depends="javac, create.mymacro" description="GWT compile to Safari/JavaScript"> 
    <mymacro target="${lhs.safari.target}"/> 
</target 

<target name="create.mymacro"> 
    <macrodef name="mymacro"> 
    <attribute name="target" default="${lhs.target}"/> 
    <sequential> 
     <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"> 
     <classpath> 
      <pathelement location="src"/> 
      <path refid="project.class.path"/> 
     </classpath> 
     <jvmarg value="-Xmx256M"/> 
     <arg value="@{target}"/> 
    </java> 
    </sequential> 
    </macrodef> 
</target> 
+0

Doit placer crate.mymacro avant les autres cibles, mais à part ça ça a bien marché! Merci! –

Questions connexes