2011-11-28 21 views
6

Estoy tratando de mover un archivo (especificado por un patrón) a un lugar determinado en un macrodef Ant:macrodef y "propiedades locales"

<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> 

Esto funciona sólo una vez como ${source_name} es inmutable.

Una opción sería usar la tarea variable, pero no encontré la manera de asignar un refid a var.

¿Hay alguna manera de tener algo similar a la variable local en un macrodef? O (problema XY) ¿hay una forma mejor de resolver mi problema?

Respuesta

8

Desde Ant 1.8 puede usar el local task para esto. Por ejemplo:

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

Su ejemplo es justo el tipo de cosas es para local!

Cuestiones relacionadas