2014-03-26 21 views
1

我們爲我們的客戶開發了一個java網站/平臺。java webapps並將現有項目開源到github - properties文件

數據庫屬性(用戶名,密碼等),都存儲在項目的src/main/resources/*.properties如database-live.properties,database-dev.properties,database-local.properties

客戶已經決定,他們將喜歡開源他們的平臺,並從私人bitbucket存儲庫轉移到開放的github存儲庫。

由於私有存儲庫具有私有數據庫屬性,因此存在問題,因此不應公開。

因此,我們不會傳輸bitbucket中的歷史記錄,而是在github上創建一個乾淨的repo,將src/main/resources/*.properties中的用戶,密碼等作爲空白屬性。 bitbucket回購將被關閉,並且本地機器和live/dev機器的origin將被更改爲github回購。

但是,在live和dev盒子上,我們仍然希望能夠從github上運行git pull,並運行mvn clean install,但使用正確的數據庫細節。

要做到這一點,最好的方法是什麼? 我們是否應該只將屬性文件添加到.gitignore,然後在各種機器的本地存儲庫中,使用該環境的正確詳細信息編輯文件?

或者我們應該以某種方式外部化配置,並在做maven構建時以某種方式包含它?最好的辦法是什麼?

這似乎是一個常見的用例,但也許我只是以錯誤的方式去做。

回答

0

很久以前我們遇到過類似的問題。以下是我們最終做的事情:

我們概括了配置文件,其中有充足的示例和註釋以指示每個項目將代表什麼。試圖讓第一次嘗試它的人變得容易,瞭解每個人的立場,以及它如何影響應用程序的行爲。

然後我們維護一個單獨的回購,讓我們說部署配置,只是爲了進入部署的配置文件。它包含所有包含配置數據,用戶名和密碼等的xml文件和屬性文件。

然後我們使用局部變量處理應用程序。在部署期間,部署腳本會從deployment-configs repo中提取配置文件,並將其替換爲應用程序庫中的配置文件。

在一天結束時,我們沒有開源它。但是,我們成功地將配置文件與應用程序回購庫中的實際值分開。

+0

這幾乎是我最終做的。我們將* .properties重命名爲* .properties.template,然後有一個單獨的私有回購,它具有開發和生產配置 – kabal

相關問題