2011-08-18 91 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/" 
相關問題