使用 Groovy markupbuilder 构建简单的网页。在步骤中找不到这样的 DSL 方法 'body'
Using Groovy markupbuilder to build simple web page. No such DSL method 'body' found among steps
我正在尝试使用 HTML 标记构建一个简单的网页,但出现错误:java.lang.NoSuchMethodError:在步骤
中找不到这样的 DSL 方法 'body'
代码:
@NonCPS
def parseJsonForXml(inputJson) {
try {
def writer = new StringWriter()
def markup = new MarkupBuilder(writer)
markup.html {
body {
div {
h1 "Test Page"
}
}
}
Jenkins 做了很多 Groovy 魔术,比如 CPS 转换、自定义方法拦截器等。
简而言之,嵌套关闭器不会像它们应该在 groovy 中那样在标记对象上调用,而是 Jenkins 更改接收器对象并在主脚本上调用它们,因此它检查是否定义了 body DSL 步骤在 Jenkins 和插件中定义的所有 DSL 方法的内部映射中。
为了让它工作改变使调用者对象显式
import groovy.xml.MarkupBuilder
@NonCPS
def parseJsonForXml() {
def writer = new StringWriter()
def markup = new MarkupBuilder(writer)
markup.with {
html {
body {
div {
h1 "Test Page"
}
}
}
}
return writer.toString()
}
println(parseJsonForXml())
它完全符合您的预期
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] echo
<html>
<body>
<div>
<h1>Test Page</h1>
</div>
</body>
</html>
[Pipeline] End of Pipeline
Finished: SUCCESS
我正在尝试使用 HTML 标记构建一个简单的网页,但出现错误:java.lang.NoSuchMethodError:在步骤
中找不到这样的 DSL 方法 'body'代码:
@NonCPS
def parseJsonForXml(inputJson) {
try {
def writer = new StringWriter()
def markup = new MarkupBuilder(writer)
markup.html {
body {
div {
h1 "Test Page"
}
}
}
Jenkins 做了很多 Groovy 魔术,比如 CPS 转换、自定义方法拦截器等。 简而言之,嵌套关闭器不会像它们应该在 groovy 中那样在标记对象上调用,而是 Jenkins 更改接收器对象并在主脚本上调用它们,因此它检查是否定义了 body DSL 步骤在 Jenkins 和插件中定义的所有 DSL 方法的内部映射中。 为了让它工作改变使调用者对象显式
import groovy.xml.MarkupBuilder
@NonCPS
def parseJsonForXml() {
def writer = new StringWriter()
def markup = new MarkupBuilder(writer)
markup.with {
html {
body {
div {
h1 "Test Page"
}
}
}
}
return writer.toString()
}
println(parseJsonForXml())
它完全符合您的预期
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] echo
<html>
<body>
<div>
<h1>Test Page</h1>
</div>
</body>
</html>
[Pipeline] End of Pipeline
Finished: SUCCESS