1

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

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

4

1 回答 1

1

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

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

environments {
    development {
        quartz {
            whiteListedJobs = defaultJobs + Job4.class
        }
    }
}
于 2013-06-12T15:57:11.997 回答