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

Groovy AntBuilder,省略条件属性,如;setOmitNullAttributes“;Markupulder上的功能,ant,attributes,groovy,builder,Ant,Attributes,Groovy,Builder,示例代码: def ant = new AntBuilder() ant.'antlib:org.jacoco.ant:agent'( enabled: enabled, property: 'agentvmparam') 当“enabled”参数为null时,我希望它不出现在ant任务转换中,而不仅仅是“empty”。“empty”被计算为“true”,这不是我想要的 xml生成器示例: def xml = new Markup

示例代码:

def ant = new AntBuilder()
ant.'antlib:org.jacoco.ant:agent'(
                enabled: enabled,
                property: 'agentvmparam')
当“enabled”参数为null时,我希望它不出现在ant任务转换中,而不仅仅是“empty”。“empty”被计算为“true”,这不是我想要的

xml生成器示例:

def xml = new MarkupBuilder()
xml.omitNullAttributes = true
xml.root(
        requiredAttribute:'required',
        optionalAttribute: optionalAttribute
        ) { }
如果Groovy参数的计算结果为null,“ompitNullAttributes”将确保“optionalAttribute”xml元素参数甚至不存在

所以我明白了

<root requiredAttribute='required' />

而不是

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

这是一种可能的解决方法,但这是否有效

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

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

太好了!效果很好,持续时间很长。谢谢对我的描述有一点澄清:在Ant中,“empty”被计算为“false”,但我需要它根本不被计算,这样默认值就可以生效