我想要一个 groovy 配置,它允许我设置一些默认值(即计算值),这些默认值可以被环境选择性地覆盖。以下脚本显示了一个简单的示例。
import static junit.framework.Assert.*
def config =
"""
base { value = "X" }
calc { value = base.value }
environments {
overridebase {
base { value = "1" }
}
}
"""
// these asserts work
assertEquals("X", new ConfigSlurper().parse(config).base.value)
assertEquals("X", new ConfigSlurper().parse(config).calc.value)
assertEquals("1", new ConfigSlurper("overridebase").parse(config).base.value)
// this assert fails as calc.value remains "X"
assertEquals("1", new ConfigSlurper("overridebase").parse(config).calc.value)
前三个断言有效,因此原始计算值有效,但它似乎解决得太快了,因为即使更改了基数,它仍保持原始计算值。