![](/img/trans.png)
[英]Write a literal YAML field using Groovy 3.0's new YamlBuilder
[英]Using Groovy 3 YamlBuilder with Yaml that contains a hyphen
我正在尝试编写一个使用 yamlbuilder 编写 yaml 文件的 Groovy 3 脚本。 除了以下内容,我几乎可以处理所有事情;
execution:
set-props:
url:http://myhouse.net
port:8000
如何编写允许在名称中使用连字符的映射? 继我之前的工作之后,我愚蠢地尝试了;
def setprops=[:]
setprops=(["url":"http://myhouse.net","port":"8000"])
execution.set-props=setprops
这给了我一个错误“赋值的 LHS 应该是一个变量或一个字段”。
如果我只使用 execution.setprops 那么它工作正常,但当然 yaml(execution) 产生的 yaml 是无效的。
我认为如果 set-props 是一个键/值对,那么它可以引用,一切都会好起来的。 但是因为它是结构的一部分,我不知道需要做什么。
您可以使用字符串作为“方法”,构建器将从它们创建您的中间结构:
import groovy.yaml.YamlBuilder
def b = new YamlBuilder()
b.execution {
"set-props"(
url: "..."
)
}
println b
或者继续您的示例:您可以创建整个地图并使用 is 作为参数,您希望在其中包含该内容。
def setprops=["set-props": [url:"..."]]
b.execution(setprops)
两者都会导致:
---
execution:
set-props:
url: "..."
请注意,第一个版本通过传递的闭包嵌套,然后传入映射。 第二位只是传递一个嵌套映射。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.