Groovy 如何避免外部范围值与使用MarkupBuilder相混淆?
在xml中我需要一个名为file的元素,但是gradle项目有一个名为file的属性,该属性被调用。最好的解决办法是什么Groovy 如何避免外部范围值与使用MarkupBuilder相混淆?,groovy,gradle,Groovy,Gradle,在xml中我需要一个名为file的元素,但是gradle项目有一个名为file的属性,该属性被调用。最好的解决办法是什么 import groovy.xml.MarkupBuilder task test { def writer = new StringWriter() def xml = new MarkupBuilder(writer) xml.elem1(test: 'fest') { elem2(a: 'b') file(c: 'd') elem4
import groovy.xml.MarkupBuilder
task test {
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.elem1(test: 'fest') {
elem2(a: 'b')
file(c: 'd')
elem4(e: 'f')
}
println(writer)
}
您应该能够做到:
xml.file( c: 'd' )
您应该能够使用“delegate”变量,该变量在每个XML元素的代码块中自动可用 例如:
import groovy.xml.MarkupBuilder
task test {
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.elem1(test: 'fest') {
elem2(a: 'b')
delegate.file(c: 'd')
elem4(e: 'f')
}
println(writer)
}
谢谢嗯,我不能决定它是否合乎逻辑;也许两者都有。我想这说明了一点实现。不知何故,我认为它生成了一个要调用的对象树,但它似乎只是其中一个,而当前闭包的状态决定了将其放置在何处,由于它是
xml
变量中的MarkupBuilder
实例,因此我将其作为thoredge可能喜欢也可能不喜欢的替代语法提供。