在Grails配置中,如何在其他环境中访问变量?

时间:2013-06-12 13:50:17

标签: grails groovy quartz-scheduler config

如果我在一个环境中的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',这告诉我它不起作用。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

问题是groovy ConfigSlurper没有提供在解析过程中读取不同级别的配置条目的方法。但是,它被解析为Groovy脚本,因此您可以使用局部变量来避免完全重写条目:

def defaultJobs = [ Job1.class, Job2.class, Job3. class ]
quartz {
    whiteListedJobs = defaultJobs
}

environments {
    development {
        quartz {
            whiteListedJobs = defaultJobs + Job4.class
        }
    }
}