<macrodef/>
2 つの方法で呼び出すことができるa を実装したいと思います: 単一のファイル パラメーターを使用するか、 <fileset/>
:
<macrodef name="sqlplus">
<attribute name="file"/>
<sequential>
<!-- there be dragons, here -->
</sequential>
</macrodef>
<macrodef name="sqlplus">
<element name="files"/>
<sequential>
<for param="file">
<path>
<files/>
</path>
<sequential>
<!-- call the other macro -->
<sqlplus file="@{file}"/>
</sequential>
</for>
</sequential>
</macrodef>
これはうまくいかないようです。「準」オーバーロードを実装するために使用できるトリックはありますか? または、マクロ定義の 1 つの名前を変更する必要がありますか? 私はこれを書いて、引数が設定されているかどうかを確認できることを知っています(たとえば、ant-contribを使用して):
<macrodef name="sqlplus">
<attribute name="file"/>
<element name="files" optional="yes"/>
<!-- ... -->
</macrodef>
<attribute/>
しかし、オプションにする方法はありません。