似乎只有grails.serverURL和grails.path被识别为环境混淆。 bla和foo被忽略,无法在应用程序中使用 任何人都可以解决这个问题并提供一种方法来为每个环境配置bla和foo吗?
environments {
production {
grails.serverURL = "http://alpha.foo.de"
grails.path = ""
bla = "text"
foo= "word"
}
test {
grails.serverURL = "http://test.foo.de"
grails.path = ""
bla = "othertext"
foo= "otherword"
}
}
答案 0 :(得分:2)
从Grails 3.0开始,可以使用Groovy或YAML语法。新的主应用程序配置文件是/conf/application.yml
,但您可以继续使用定义/conf/application.groovy
文件的现有groovy配置。
这是每个环境(在YAML中)的数据源定义示例:
environments:
development:
dataSource:
dbCreate: create-drop
url: jdbc:h2:mem:devDb
test:
dataSource:
dbCreate: update
url: jdbc:h2:mem:testDb
production:
dataSource:
dbCreate: update
url: jdbc:h2:prodDb
myenv:
dataSource:
dbCreate: update
url: jdbc:h2:myenvDb
要在特定环境中运行grails命令,您可以使用:
grails [environment] [command name]
要定位与dev,test和prod不同的环境,您可以使用:
grails -Dgrails.env=myenv run-app
有关详细信息,请参阅grails environment documentation或this example application。
答案 1 :(得分:0)
所有ConfigSlurper变量都由环境确定范围。你上面所展示的应该可以正常工作。
使用grails run-app
时,默认情况下您在development
环境中运行。这可能是你的问题吗?
答案 2 :(得分:0)
...试
> grails prod run-app
这应该给你bla(文本)和foo(word)
> grails test run-app
这应该给你bla(othertext)和foo(otherword)
答案 3 :(得分:0)
Config.groovy设置
environments {
development {
grails.serverURL = "http://alpha.foo.de"
grails.path = "/bar"
staticServerURL = "http://static.foo.de"
staticPath = "/static"
}
}
源代码index.gsp
${grailsApplication.config.staticServerURL}a
${grailsApplication.config.staticPath}b
${grailsApplication.config.grails.serverURL}c
${grailsApplication.config.grails.path}d
使用grails run-app
启动时打印出来的内容a b http://alpha.foo.dec /bard
答案 4 :(得分:0)
在Config.groovy中检查您是否拥有环境导入
import grails.util.Environment
否则Environment.current为空。