我想创建一个宏:
<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 for filesets来解决我的特定问题(这实际上是我试图将其放入元素中)。使用refid,只需使用一个带有默认值的macrodef属性就很简单。
另一种选择是创建一个使用该元素的新基本宏,然后我可以将我现有的宏保留为使用那个...但是,仍然没有一个元素的真正默认机制(这将是好的)。
所以,西蒙得到答案,因为他是对的!谢谢!
答案 0 :(得分:7)
根据macrodef
task的嵌套element
元素文档,这是不可能的。
您所描述的功能完全a Bugzilla issue open,不幸的是,自2004年以来一直开放。
答案 1 :(得分:3)
如果您将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!