Groovy AntBuilder,省略条件属性,如MarkupBulder上的“setOmitNullAttributes”功能

时间:2011-01-14 14:30:35

标签: ant attributes groovy builder

示例代码:

def ant = new AntBuilder()
ant.'antlib:org.jacoco.ant:agent'(
                enabled: enabled,
                property: 'agentvmparam')

当“enabled”参数为null时,我希望它不会出现在ant任务转换中,而不仅仅是“空”。 “empty”被评估为“true”http://ant.apache.org/manual/develop.html#set-magic,这不是我想要的。

xml builder示例:

def xml = new MarkupBuilder()
xml.omitNullAttributes = true
xml.root(
        requiredAttribute:'required',
        optionalAttribute: optionalAttribute
        ) { }

如果Groovy参数的计算结果为null,则“omitNullAttributes”将确保“optionalAttribute”xml元素参数不存在。

所以我得到了

<root requiredAttribute='required' />

而不是

<root requiredAttribute='required' optionalAttribute='' />

1 个答案:

答案 0 :(得分:0)

一点可能的解决方法,但这有用吗?

def ant = new AntBuilder()
ant.'antlib:org.jacoco.ant:agent'( [ enabled:enabled, 
                                     property:'agentvmparam' ].findAll { it.value != null } )

ie:使用findAll删除参数映射的空条目