覆盖application.properties文件中的grails.serverURL和特定于应用程序的grails.propname设置

时间:2009-06-25 18:12:44

标签: configuration grails configuration-files

我需要在运行时覆盖grails.serverURL,而不必重新生成应用程序的WAR文件。我尝试了在grails.serverURL文件中设置application.properties的各种方法,但无法使其正常工作。

以下是Config.groovy的环境特定部分:

environments {
   prod
   {
      grails.serverURL = "http://nonexistentserver.somecompany.com:8080"
      grails.anotherappspecificURL = "xcc://user:password@server.somecompany.com"
   }

基本上,我们的application.properties看起来像这样:

grails.env=prod
grails.war.deployed=true
app.grails.version=1.0.4
app.name=myapp

以下是我尝试覆盖设置的方法之一。这些在Config.groovy

中定义
grails.serverURL=http://webserver1.somecompany.com:8080
grails.anotherappspecificURL=xcc://admin:xyzabc123@specificserver.somecompany.com

无需更改代码即可获得任何帮助,非常感谢!

3 个答案:

答案 0 :(得分:3)

在Config.groovy中覆盖值的正确方法是使用外部属性文件,请参阅:

http://grails.org/doc/1.1.x/guide/3.%20Configuration.html#3.4%20Externalized%20Configuration

在Config.groovy中指定外部属性文件,例如:

grails.config.locations = [ "classpath:app-config.properties"]

在属性文件中(可以存储在grails-app / conf /中)指定覆盖值:

grails.serverURL=http://webserver1.somecompany.com:8080

一旦部署了war,只要你需要更改serverURL,只需修改/WEB-INF/classes/app-config.properties中的属性文件并重新加载上下文。

答案 1 :(得分:0)

这可能不相关,但我注意到你的grails.serverURL中缺少引号

答案 2 :(得分:0)

我发现外化配置有点棘手(从Grails 1.3.7开始)。您必须将文件放入Config.groovy

中的grails.config.locations
grails.config.locations << 'classpath:my-config-file.groovy'

但是如果不添加其他文件,则无法访问这些属性。我已经通过将新配置文件放入grails-app/conf并将其添加到类路径中,将以下内容添加到scripts/Events.groovy来使其成功。

eventCompileEnd = {
    ant.copy(todir:classesDirPath) {
      fileset(file:"${basedir}/grails-app/conf/SecurityConfig.groovy")
    }
}

您可以在https://stackoverflow.com/a/9789506/1269312

找到更多信息