2011-11-28 21 views
6

bir Ant macrodef belirli bir konuma (bir desen ile belirtilen) bir dosyayı taşımak için çalışıyorum: Bu sadece bir kez ${source_name} değişmez olduğu gibi çalışacakMacrodef ve "Yerel özellikleri"

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

.

bir seçenek değişken görevi kullanmak olacaktır ama var bir refid atamak için bir yol bulamadık.

bir macrodef yerel değişkene benzer bir şey için bir yol var mı? Veya (XY sorun) benim sorunu çözmek için daha iyi bir yolu var mı?

cevap

8

Ant 1.8 beri bunun için local task kullanabilirsiniz. Örneğin:

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

Sizin örnek local içindir şey sadece sıralama olduğunu!