我将Grails应用程序的配置(例如数据库配置)存储在XML配置文件中。我的DataSource.groovy
正在使用配置文件来获取数据库信息。
不幸的是,当我为我的测试环境构建War文件时(使用诸如grails test war stb09.war
之类的命令),它正在运行我的DataSource.groovy
,试图打开我的开发环境中不存在的文件。
只有在部署war文件时,我才能推迟文件的打开,而不是在战争构建过程中?
谢谢你, 罗伯特
答案 0 :(得分:2)
我假设您在DataSource.groovy
文件中执行了类似的操作:
def db = new groovy.util.XmlParser().parse("connection.xml")
简单而肮脏的解决方法,就是试着抓住它:
try {
def db = new groovy.util.XmlParser().parse("connection.xml")
} catch (Exception e ) {println "Bad timing"}
在我的项目中,我实际上正在使用这样的东西:
environments {
production {
grails.config.locations << "classpath:${appName}-db-custom.properties"
}}
这样,在打包时没有问题,并且在运行时可以用适当的值替换数据源。
时间方面,grails首先从编译的DataResource.groovy
加载连接数据,然后将它们放在全局配置中。然后,通过属性文件中的配置在运行时动态覆盖这些值。