2012-05-18 42 views
1

我們有一個Grails應用程序,它使用dfc.jardctm.jar API連接到Documentum文檔庫。這些jar文件需要在類路徑上有一個dfc.properties文件來配置文檔庫設置。在一個環境中工作時這很好,但我們正在爲devtestprod環境構建戰爭文件,每個環境都有其自己的dfc.properties配置。Grails DFC的多環境配置問題

Grails環境配置非常適合處理應用程序中的其他特定於環境的設置,但我無法想出一種方法來在每個環境中覆蓋dfc.properties文件或配置Documentum API以從中檢索它的設置別的地方。

我已經考慮過具有特定環境的屬性文件,然後在每次構建戰爭之前運行一個shell腳本以將它們複製到dfc.properties文件,但是這感覺就像是太多的黑客攻擊。我希望能夠做三個戰爭版本,而不會混淆它複製不同版本的屬性文件。

grails dev war 
grails test war 
grails prod war 

關於如何解決這個多環境配置問題的任何建議將不勝感激。

+0

也許你可以研究在war文件之外保留屬性文件,但在運行時將其添加到類路徑中。例如,大多數Web服務器都有一個可以放置要在應用程序之間共享的jar文件的位置。假設你有不同的開發,測試和產品服務器,屬性文件可能只存在於服務器上。當您執行「grails test-app」時,您可能需要在您的Grails測試目錄下的另一個地方。 – GreyBeardedGeek

+0

我認爲以下鏈接中描述的解決方案適用於您的案例。 http://stackoverflow.com/questions/10629151/how-do-i-derive-physical-path-of-a-relative-directory-inside-config-groovy/10629778#10629778 –

+0

@GreyBeardedGeek我想分開'dfc .properties',以便它與環境特定的戰爭文件分開部署,打破戰爭的一體化特性。我認爲這打開了一個版本的戰爭部署的可能性,但相應的'dfc.properties'沒有更新。 – GeoGriffin

回答

0

此行添加到您的dfc.properties的WEB-INF/classes目錄內的頂部和存儲外部化版本的應用程序服務器之外:

#include D:\Documentum\config\dfc.properties 

只要你可以外部化的任何其他環境的配置,你只會需要一場戰爭。

作爲獎勵,如果您願意,還可以在WEB-INF版本中包含應用程序專用密鑰,並將其與外部副本合併。這樣,多個應用程序可以單獨配置,但也可以使用相同的docbroker/global註冊表設置。