2011-11-28 7 views
6

Sto cercando di spostare un file (specificato da un modello) per un determinato luogo in un macrodef Ant:Macrodef e "proprietà locali"

<macrodef name="extract"> 
    <attribute name="package"/> 
    <sequential> 

     <!-- the path will contain the unique file in extracted regardless of the name --> 
     <path id="source_refid"> 
      <dirset dir="${dep}/lib/@{package}/extracted/"> 
       <include name="@{package}-*"/> 
      </dirset> 
     </path> 

     <!-- this is not working: properties are immutable --> 
     <property name="source_name" refid="source_refid"/> 

     <move 
      file="${source_name}" 
      tofile="${dep}/@{package}/" 
      overwrite="true" 
     /> 

    </sequential> 
</macrodef> 

Ciò funzionerà solo una volta come ${source_name} è immutabile.

Un'opzione sarebbe quella di utilizzare l'attività variabile ma non ho trovato un modo per assegnare un refid a var.

C'è un modo per avere qualcosa di simile alla variabile locale in un macrodef? Oppure (problema XY) c'è un modo migliore per risolvere il mio problema?

risposta

8

Dal momento che Ant 1.8 è possibile utilizzare il local task per questo. Per esempio:

<local name="source_name"/> 
<property name="source_name" refid="source_refid"/> 

Il vostro esempio è proprio il genere di cose local è per!

Problemi correlati