首页 > 解决方案 > 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

解决方案


一切都按预期工作。Groovy 不是 YAML 的问题。YAML 参考说“关闭”被解释为“假”,如您在此处看到的

https://yaml.org/refcard.html

Jenkins yamlRead 读取“关闭”并将其转换为值为“假”的布尔值。


推荐阅读