2009-08-04 4 views
5

Je suis en train de copier des fichiers dans une macro, comme ceci:Comment <copy> dans un <macrodef> dans ant?

<project name="why" default="go"> 
    <macrodef name="copy-some-stuff"> 
    <attribute name="file.name" /> 

    <copy todir="/var/tmp"> 
     <fileset file="${file.name}" /> 
    </copy> 
    </macrodef> 

    <target name="go"> 
    <copy-some-stuff file.name="/etc/hosts" /> 
    </target> 
</project> 

mais je reçois le texte suivant

BUILD FAILED 
b.xml:3: macrodef doesn't support the nested "copy" element. 

Toutes les idées, autre que « oui, indeeed, macrodef ne supporte pas l'élément "copie" imbriqué. " J'ai tellement ça. Je cherche pourquoi cette limitation est ici et une solution de contournement possible (sans utiliser antcall).

+0

On dirait que quelqu'un n'a pas lu le manuel pour macrodef. –

Répondre

9

Essayez entourant l'élément <copy> avec <sequential>:

<macrodef name="copy-some-stuff"> 
    <attribute name="file.name" /> 
    <sequential> 
     <copy todir="/var/tmp"> 
      <fileset file="@{file.name}" /> 
     </copy> 
    </sequential> 
</macrodef> 
+1

Merci. On dirait que j'ai aussi bâclé l'utilisation des attributs dans la macro. Doit être: Avis utilisant @ param not $. – Trenton

+0

En effet, n'a pas remarqué cela. J'ai changé ma réponse en conséquence. –

+0

Pouvez-vous développer un peu pourquoi cela fonctionne? –

Questions connexes