我需要在运行时覆盖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
无需更改代码即可获得任何帮助,非常感谢!
答案 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 << 'classpath:my-config-file.groovy'
但是如果不添加其他文件,则无法访问这些属性。我已经通过将新配置文件放入grails-app/conf
并将其添加到类路径中,将以下内容添加到scripts/Events.groovy
来使其成功。
eventCompileEnd = {
ant.copy(todir:classesDirPath) {
fileset(file:"${basedir}/grails-app/conf/SecurityConfig.groovy")
}
}
找到更多信息