groovy - groovy 错误地将“off”推断为布尔值而不是字符串
问题描述
我在 groovy 中有一个 Jenkinsfile 脚本,它正在处理一个 Java 应用程序的application.properties
文件,我刚刚添加了这个文件
spring.main.banner-mode: off
在我的脚本中,我application.properties
使用 Jenkins 插件库将文件读入内存中的映射,yamlRead
然后再次将值输出到另一个文件中,但结果如下:
spring.main.banner-mode: false
这会在启动时破坏我的 Java 程序,并出现令人讨厌的 Spring Boot 错误。spring boot 变量需要 OFF、FILE 或 CONSOLE。
我无法更改yamlRead
,但我可以更改如下所示的输出脚本:
yaml.each {
key, value -> B: {
// some processing...
sh "echo '$base$key=$value' >> $file"
}
}
}
如何确定地图是否实际上具有布尔类型(这会很糟糕,因为我无法更改它)或者是否在 myy 中发生了不希望的布尔类型转换echo >> file
?
或者我可以以某种方式强制 groovy 在读取输入时不推断布尔值,也许在“关闭”周围加上引号?
解决方案
一切都按预期工作。Groovy 不是 YAML 的问题。YAML 参考说“关闭”被解释为“假”,如您在此处看到的
Jenkins yamlRead 读取“关闭”并将其转换为值为“假”的布尔值。
推荐阅读
- terraform - Terraform:如何根据条件将值分配给属性
- c++ - 如何在类函数中使用 srand() 并产生不同的结果
- python - Python:如何检查变量的最后三个数字是否为 000?
- java - 单击按钮时在 startActivity 上崩溃
- asp.net - 如何修复 web.config 中重写部分的无效配置错误
- python - 在不操作字符串的情况下将 python 字符串插入 JSON 数组
- java - JAX-rs + Json has Failure parsing MediaType string error 错误
- firebase - 如何将照片推送/上传到 Google (Firebase) 存储?
- docker - 无法从主机内连接到主机接口之一上的 docker 容器端口
- git - 只获取合作者,而不是 github repo 的 ORG 的所有者