尝试读取配置文件的Grails'war'命令出现问题

时间:2011-08-04 03:39:03

标签: grails

我将Grails应用程序的配置(例如数据库配置)存储在XML配置文件中。我的DataSource.groovy正在使用配置文件来获取数据库信息。 不幸的是,当我为我的测试环境构建War文件时(使用诸如grails test war stb09.war之类的命令),它正在运行我的DataSource.groovy,试图打开我的开发环境中不存在的文件。

只有在部署war文件时,我才能推迟文件的打开,而不是在战争构建过程中?

谢谢你, 罗伯特

1 个答案:

答案 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加载连接数据,然后将它们放在全局配置中。然后,通过属性文件中的配置在运行时动态覆盖这些值。