Элемент по умолчанию для macrodef Ant?
Я хотел бы создать макрос как таковой:
<macrodef name="testing">
<element name="test" implicit="yes"/>
<sequential>
<test/>
</sequential>
</macrodef>
и затем использовать его:
<testing>
<echo message="hello world"/>
</testing>
однако я хотел бы указать значение по умолчанию для неявного элемента... что-то вроде:
<macrodef name="testing">
<element name="test" implicit="yes">
<echo message="hello world"/>
</element>
<sequential>
<test/>
</sequential>
</macrodef>
поэтому я могу использовать его как таковой:
<testing/>
кроме того, где я хочу изменить элемент по умолчанию.
возможно ли это без определения задачи через класс Java? До сих пор я не вижу никакой документации, которая указывает, как это сделать, если так.
обновление
Я закончил решение моей конкретной проблемы с помощью refid для наборов файлов (что я на самом деле пытался вытащить в элемент). Используя refid, было просто использовать атрибут macrodef, который может иметь значение по умолчанию.
Другой альтернативой было бы создать новый базовый макрос, который использует элемент,и тогда я мог бы сохранить свой существующий макрос как использующий этот... но все же, нет реального механизм по умолчанию для элемента (что было бы неплохо).
Итак, Саймон получает ответ, так как он прав! Спасибо!
2 ответов
Это невозможно на основе вложенных element
документация по элементам для macrodef
задание.
здесь проблема Bugzilla открыта именно для функциональности, которую вы описываете, к сожалению, он был открыт с 2004 года.
Если вы определяете свой macrodef как:
<macrodef name="testing">
<element name="additional" optional="true"/>
<sequential>
<echo message="hello"/>
<additional/>
</sequential>
</macrodef>
следующий вызов:
<target name="testing-call">
<mylib:testing/>
<mylib:testing>
<additional>
<echo message="world!"/>
</additional>
</mylib:testing>
</target>
вывод:
[echo] hello
[echo] hello
[echo] world!