メモ:gradle の task で MarkupBuilder を使う時の注意点

file とか name というタグを出力する時は、要注意。
groovy - How to avoid outer-scope values messing with using the MarkupBuilder? - Stack Overflow

build.gradle

import groovy.xml.MarkupBuilder
task sample << {
  def writer = new StringWriter()
  def builder = new MarkupBuilder(writer)
  builder.tag {
    'tag-name'('hoge')
    component {
      'resource-id'('fuga')
    }
    attribute {
      // // MarkupBuilder のインスタンス. の形で書かないと name が出力されない
      builder.name("test")
      required("true")
      type("java.lang.Object")
    }
  }  
  println(writer)
}