Что мне делать, так это иметь внешний файл Config.groovy, например: MyConfig.groovy
В конце стандартного файла grails Config.groovy у меня есть следующее:
def ENV_NAME = "MY_EXTERNAL_CONFIG"
if(!grails.config.locations || !(grails.config.locations instanceof List)) {
grails.config.locations = []
}
if(System.getenv(ENV_NAME)) {
grails.config.locations << "file:" + System.getenv(ENV_NAME)
} else if(System.getProperty(ENV_NAME)) {
grails.config.locations << "file:" + System.getProperty(ENV_NAME)
} else {
println "No external Configs found."
}
Так что теперь вы можете иметь файл MyConfig.groovy в любом месте производственной среды (например) и затем установить системную переменную среды, чтобы она указывала на этот файл (или передать его в качестве параметра для startup.sh), перед тем как запустить tomcat:
MY_EXTERNAL_CONFIG="/home/tomcat/configs/MyConfig.groovy"
export MY_EXTERNAL_CONFIG
Вот и все. Теперь у вас есть внешний файл MyConfig.groovy. Свойства в нем доступны из вашего приложения Grails, так как они были частью стандартного Config.groovy
import org.codehaus.groovy.grails.commons.*
//...
ConfigurationHolder.config.foo.bar.hello