2016-09-30 3 views
0

Я весь день бил головой о стену!Пустой набор файлов после копирования в макрокоманде в Ant

В приведенном ниже макросе я всегда в конечном итоге с пустым набором файлами:

<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'd:

[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'. –

Смежные вопросы