Groovy markupbuilder を使用して ant スクリプトを作成しています。残念ながら、markupbuilder では、'target' という名前のノードを作成できません (targetee では問題ありません)。
Caught: groovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (java.util.LinkedHashMap, BuildGen$_main_closure1_closure5) values: [[name:clean], BuildGen$_main_closure1_closure5@18efaea]
Possible solutions: wait(), any(), trim(), split(), dump(), next()
したがって、私のマークアップビルダー内でこのスニペットが機能します:
targete(name: 'clean') {
delete(dir: rootProj.compilerOutput)
}
しかし、「ターゲット」ノードで同じことを達成したいと思います..
この方法で空の「ターゲット」ノードを作成できました。
builder.invokeMethod('target', [name: 'clean'])
しかし、どうすればこの「ターゲット」ノード内にさらにノードを配置できますか?
作業コードの例:
def writer = new StringWriter()
def builder = new groovy.xml.MarkupBuilder(writer)
builder.project(name: projectName, basedir:'.') {
// works with 'target2' but not with 'target'
'target2'(name: 'build-subprojects') {
rootProj.getAllDependentProjects().each { p->
echo(message: "Compiling project: ${p.projectName}")
// some real stuff
}
}