2013-04-16 49 views
1

我在做什麼似乎是最好的做法,在Grails中使用外部配置文件。自動化使用外部配置文件中的Grails

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

我在測試過程中將配置文件放在根文件夾中,它工作。我在生產過程中手動將配置文件放入我們的Tomcat服務器的lib文件夾(在類路徑中)並且工作。但我不想每次都需要複製/創建我們的外部配置文件。建立戰爭和部署應用後,有可能是我的配置文件被移動到正確的位置,這樣我就沒有我的任何應用程序的部署過程中手動移動呢?謝謝。

回答

0

注:我可以編輯問題的標題,以反映實際的問題,就是關於自動化。

這取決於手動您現有的流程是怎麼...

讓我們想象一下如下:

  • 你有一個持續集成引擎,如詹金斯/哈德森運行
  • SCP/rsync的在成功的外部配置文件建立
  • 您部署在成功BU應用到服務器ILDS(假設GANT下PROJECTNAME部署腳本/腳本 - >的Tomcat,JBoss和WebSphere中
0

在了項目中,我們需要爲每個環境不同的配置設置(本地,開發,測試, 生產)。儘管我們希望避免更新不同服務器上的配置文件的麻煩,但我們確實需要在特定環境中快速覆蓋配置值。

,以適應這些要求,我們的「級聯」配置文件中的以下設置:

  • common.properties捆綁在.war文件,並總是加載
  • xxx.properties文件中捆綁.war文件,並且根據環境變量(appEnv)一個或沒有這些配置文件的值被加載(例如,如果環境變量是YYY,yyy.properties被裝載)的本地文件系統上
  • 配置文件使用appEnv和appLibRoot環境變量找到。如果找到與appEnv.properties相對應的配置文件,則最後加載它。

通過簡單地在Config.groovy中提供配置文件位置列表來完成在Grail應用程序的startp上加載配置文件。 AppEnv類使用appEnv和appLibRoot環境變量創建配置文件列表,並檢查哪些文件實際存在於類路徑和文件系統中。

Config.groovy  
grails.config.locations = AppEnv.instance.configLocations