2016-09-30 15 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'dされているものです:私は "SFS" ファイルセットが空であることを意味だと思う

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

。私はincludesを追加して、その明示的な設定がファイルを選択したかどうかを確認しましたが、

コピー作業がブロックされない場合は、コピー後にスリープ状態にしてみました。助けてくれなかった。

私は間違っていますか?

答えて

1

あなたはではありません既存のantタスクと同じ名前のマクロ要素を指定します。私は、あなたは、例えばfilesfileset要素の名前を変更するお勧め:

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

あなたは(macroDefを参照)マクロを実行する際に、その内容に置き換えられプレースホルダとしてfiles要素を見ることができます。 これでマクロを呼び出すことができます:

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

これは、ありがとう!また指摘してくれたことは、 'refid'ではなく' 'を直接参照することができます。 –

関連する問題