是否可以从Grails中的外部化配置文件加载更多配置文件?

时间:2011-08-18 08:01:36

标签: grails configuration grails-config

假设情况:

我已经从网上下载了Grails应用程序作为WAR文件foo.war。在文档中,它说我可以将自己的自定义配置放在/foo.groovy中,因为此路径包含在grails.config.locations Config.groovy中。我可以将所有自定义配置转储到该文件中,生活也很好。

怎么样,这是我的问题...... FooApp的配置很大而且毛茸茸,而且我不想把它全部放在一个文件中。我想将其分解为/bar.groovy/baz.groovy以保持组织有序。有没有办法在/foo.groovy中指定一些内容,以便FooApp还会选择/bar.groovy/baz.groovy并处理它们?

我已经尝试将路径附加到grails.config.locations中的/foo.groovy,但Grails不喜欢这样,并在启动时抛出了一个令人讨厌的异常。我不确定采取什么其他方法。

为清晰起见编辑:

grails-app/conf/Config.groovy看起来像这样:

grails.config.locations = ["file:/foo.groovy"]

现在,无需修改grails-app/conf/Config.groovy,只修改/foo.groovy,是否可以加载/foo.groovy以外的更多配置文件?

1 个答案:

答案 0 :(得分:2)

您可以在foo.groovy

中添加其他配置文件

<强> foo.groovy

port {
  to {
    somewhere=8080
    another {
      place=7070
    }  
  }  
}
host = new ConfigSlurper().parse(new File("bar.groovy").toURL())

<强> bar.groovy

to {
  somewhere="http://localhost/"
  another {
    place="https://another.place.com/"
  }
}

所以在你的应用程序中你有:

assert grailsApplication.config.port.to.somewhere == 8080
assert grailsApplication.config.port.to.another.place == 7070
assert grailsApplication.config.host.to.somewhere == "http://localhost/"
assert grailsApplication.config.host.to.another.place == "https://another.place.com/"