2014-06-27 107 views
0

我有一個外部配置文件,我在開發環境中使用它來指定我的grails應用程序的數據源。我使用以下幾行導入config.groovy文件中的外部文件:部署戰爭的Grails外部配置位置

grails.config.locations = ["classpath:${appName}-config.groovy", 
          "file:./${appName}-config.groovy"] 
if (System.properties["${appName}.config.location"]) { 
    println("found") 
    grails.config.locations << "file:" + System.properties["${appName}.config.location"] 
} 

這可以按預期方式正常工作。不過,當應用程序部署爲war文件時,我遇到了一個問題。如上配置文件的位置在config.groovy中被硬編碼。我的要求是允許客戶指定他們自己的配置文件的位置。

由於在構建war文件之前config.groovy中的位置被硬編碼,所以我被困在這個位置。我不知道如何去讓客戶修改這些值。我不想爲包含其配置文件位置的每個客戶構建不同的war文件。

是否有改變這些值的方法?或者,也許我有一個硬編碼價值的合理性,所有客戶都應該放置他們的配置文件?我有興趣看看有沒有人有任何建議?

+2

您已經擁有'$ {appName} .config.location'系統屬性。 –

回答

0

我有下一個工作配置。所以,它可能對你有用。

// This condition may be rewrited in the Groovy style 
final configbase = System.properties.'aaaaa.configbase' ? System.properties.'aaaaa.configbase':"${userHome}/.aaaaa/" 
grails.config.locations = [ 
     // Standart Grails config 
     "classpath:${appName}-config.properties", 
     "classpath:${appName}-config.groovy", 

     // Redhat Openshift 
     "file:${userHome}/app-root/data/.aaaaa/${appName}-config.properties", 
     "file:${userHome}/app-root/data/.aaaaa/${appName}-config.groovy", 

     // Based on System property -Daaaaa.configbase 
     "file:${configbase}/${appName}-config.properties", 
     "file:${configbase}/${appName}-config.groovy", 
]