Элемент по умолчанию для макроопределения Ant? - PullRequest
7 голосов
/ 08 апреля 2009

Я хотел бы создать макрос как таковой:

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

7 голосов
/ 10 апреля 2009

Это невозможно из-за документации вложенного элемента element для задачи macrodef .

Существует ошибка Bugzilla, открытая для точно описанной вами функциональности, к сожалению, она была открыта с 2004 года.

3 голосов
/ 08 апреля 2009

, если вы определили свой макроопределение как:

<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!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...