如果我在一个环境中的grails中有一个列表环境变量,如何在级联到其他环境中修改它?
例如,在我的石英配置中,我添加了以下内容,
quartz {
// other variables remove for clarity
whiteListedJobs = [ Job1.class, Job2.class, Job3.class ]
}
石英并非特定于任何单一环境。但在我的环境特定配置中,我想覆盖此列表以包含针对特定环境的更多作业。
类似的东西,
environments {
development {
quartz {
whiteListedJobs = whiteListedJobs + Job4.class
}
}
}
但不幸的是,这不起作用。我试图将石英配置变量作为列表读取的代码抛出Cannot cast object '{}' with class 'groovy.util.ConfigObject' to class 'java.util.List'
,这告诉我它不起作用。
这样做的正确方法是什么?
答案 0 :(得分:1)
问题是groovy ConfigSlurper
没有提供在解析过程中读取不同级别的配置条目的方法。但是,它被解析为Groovy脚本,因此您可以使用局部变量来避免完全重写条目:
def defaultJobs = [ Job1.class, Job2.class, Job3. class ]
quartz {
whiteListedJobs = defaultJobs
}
environments {
development {
quartz {
whiteListedJobs = defaultJobs + Job4.class
}
}
}