2016-09-30 61 views
0

我一直在這一整天都撞在牆上!在Ant中的macrodef內複製後的空文件集

在下面的宏我總是一個空文件集結束:

<macrodef name="gzipAndUploadFileset"> 
    <attribute name="mimeType"/> 
    <element name="fileset"/> 
    <sequential> 

     <delete dir="${staging}" /> 

     <copy toDir="${staging}"> 
      <fileset refid="fileset"/> 
     </copy> 

     <fileset id="sfs" dir="${staging}" includes="**/*"/> 

     <echo> 
      ${staging} 
      ${ant.refid:sfs} 
     </echo> 
    </sequential> 
</macrodef> 

staging屬性設置,並填入拷貝後50余文件。

這就是回顯:

[echo]    /path/to/staging 
    [echo]    ${ant.refid:sfs} 

我想這意味着 「SFS」 文件集是空的。我在includes中添加了一下,看看這個明確的設置是否會提取這些文件...但不是。

複製後,我試圖進入睡眠狀態,萬一複製任務不阻止。沒有幫助。

我在做什麼錯?

回答

1

你應該而不是命名您的宏元素與現有的螞蟻任務具有相同的名稱。我建議你重新命名fileset元素放入files例如:

<macrodef name="gzipAndUploadFileset"> 
    <attribute name="mimeType"/> 
    <element name="files"/> 

    <sequential> 

    <delete dir="${staging}" /> 

    <copy toDir="${staging}"> 
     <files/> 
    </copy> 

    <fileset id="sfs" dir="${staging}" includes="**/*"/> 

    <echo> 
     ${staging} 
     ${ant.refid:sfs} 
    </echo> 
</sequential> 

你可以看到files元素作爲其內容執行宏(見macroDef)時更換的佔位符。 現在你可以這樣稱呼你的宏:

<target name="testmacro"> 
    <gzipAndUploadFileset mimeType="application/x-gzip"> 
     <files> 
      <fileset dir="src"> 
       <includes name="**/*"/> 
      </fileset> 
     <files> 
</target> 
+0

這就是那個,謝謝!另外感謝您指出我可以直接引用''而不是'refid'。 –

相關問題