2012-06-25 47 views
6

作爲一名顧問,我有多個我正在爲之工作的客戶。每個客戶端都使用自己的內部Maven存儲庫,該存儲庫也設置爲鏡像中央和其他外部存儲庫。我需要在我的筆記本電腦上配置我的Maven安裝,這樣當我爲一個客戶端工作時,它會利用內部存儲庫來處理所有事情。相同儲存庫的多個Maven鏡像

我原本以爲我可以利用配置文件來處理這個問題,但鏡像設置無法在每個配置文件中更改。

有沒有人有關於如何處理這個maven配置的建議?

注意:類似的問題在這裏:How do I configure maven to access maven central if nexus server is down?,但這個問題涉及中央從鏡子來的切換與否。我需要的是中央(和其他)來自一個鏡子或基於某些屬性/設置/變量等不同的鏡像。

+2

我終於發現另一個問題,給了我足夠的洞察力來回答我自己的問題。 參考:[鏈接](http://stackoverflow.com/a/1385744/1481288) 所以,我所做的是使用$ {M2_MIRROR}在URL中設置我的鏡像定義,然後我可以設置一個環境變量,根據我工作的客戶端(或內部項目),指向正確的內部存儲庫。 – MBru

+0

+1非常非常有趣的問題!我處於同一情況,我想知道如何處理這樣的問題... +1 –

回答

0

我在項目中也有類似的要求。我創建了兩個獨立的settings.xml文件,將它們命名爲settings_one.xmlsettings_two.xml,並將它們保存在MAVEN_HOME中。根據我需要的文件,我有一個小腳本(Windows上的bat文件),它用兩個設置文件之一覆蓋現有settings.xml。

del C:\Users\<username>\.m2\settings.xml 
copy C:\Users\<username>\.m2\settings_one.xml C:\Users\tadigotl\.m2\settings.xml 
+1

我不想管理多個設置文件。我想我找到了適合我的解決方案。線索是在最初研究這個問題時我沒有找到的另一個問題。看到我的意見在OP – MBru

+0

完全相信:) – thk

0

我可以建議最簡單的解決方法是安裝的git和提交你.M2/settings.xml中(當然忽略通過的.gitignore庫本身)到Git和作出適當的分支機構爲客戶。更改設置將通過以下方式完成:

git checkout CUSTOMER_BRANCH 

並且此外任何更改都由SCM跟蹤。

2

創建兩個shell別名:

alias build_at_home="mvn -s $HOME/.m2/home_settings.xml" 
alias build_at_work="mvn -s $HOME/.m2/work_settings.xml" 

的「-s」選項是非常方便的明確說明要使用的環境設置文件。 我們在我們的共享構建服務器上使用這種機制來確保每個項目構建都是孤立的。

很明顯,在Windows上你可以創建一組批處理文件。

+0

這似乎是一個很好的改進交換設置文件的解決方案。到目前爲止,我認爲我最喜歡環境變量解決方案,其中值在我的單個settings.xml的鏡像設置中使用。 – MBru