2011-08-18 53 views
2

假设情况:是否可以在Grails中从外部化配置文件加载更多配置文件?

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

如何,这里是我的问题...... FooApp的配置很大很毛茸茸,我不希望它在一个文件中。我想分解成/bar.groovy/baz.groovy以保持组织结构。有没有办法在/foo.groovy中指定某些内容,这样FooApp也会拿起/bar.groovy/baz.groovy并处理它们?

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

编辑为清楚:

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

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

现在,无需修改grails-app/conf/Config.groovy,只有通过修改/foo.groovy,有没有办法来加载比/foo.groovy其他更多配置文件?

+0

如果这是不可能的,请考虑在[Grails Jira](http://jira.grails.org/browse/GRAILS)中提出这个请求。 – cdeszaq

回答

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/" 
相关问题