2010-02-24 27 views
5

我想限制maven只使用私有/非公共maven存儲庫,這兩個設置是否有相同的效果?在pom.xml中maven中的這兩個設置是否相同?

<repositories> 
    <repository> 
     <id>my-internal-site</id> 
     <name>our maven repository</name> 
     <url>http://myserver/repo</url> 
    </repository> 
    </repositories> 

Settings.XML中

1.設置鏡

<mirrors> 
     <mirror> 
      <id>my-internal-site</id> 
      <mirrorOf>*</mirrorOf> 
      <name>our maven repository</name> 
      <url>http://myserver/repository</url> 
     </mirror> 
    </mirrors> 

2.設置倉庫再次要求是行家從未出去公共倉庫即使內部存儲庫上不存在某些依賴關係。謝謝

回答

3

不,它們沒有相同的效果。

第二個設置添加爲一個新的存儲庫,作爲中央的「補充」,但並不妨礙Maven自行檢查中心。

第一個力的Maven通過使其反映所有儲存庫請求(通過設置mirrorOf*)使用單個庫。這是使用a single repository的方法。

您正在尋找的是第一個設置,需要在settings.xml中定義。

現在,在~/.m2/settings.xml文件中的每個機器的加入您的企業資源庫可能會有點痛苦的,我很喜歡在企業環境中做的是分發和安裝包含conf/settings.xml預定義鏡的Maven的「定製版」 。這樣,人們只需要安裝「公司」版本,他們就準備好了。

+0

@Pascal Thivent很好的回答帕斯卡爾 – ant 2010-02-24 12:23:49

+0

+1:這就是*我正在做的事情:通過自定義的'conf/settings.xml'分配一個自定義版本的maven,包括'mirrorOf'指令。 – VonC 2010-02-24 12:24:24

+0

我也使用一個自定義的Maven簽入SVN。這裏就是雞/蛋問題。作爲Maven純粹主義者,我討厭將二進制文件檢入SVN。我們只能在conf文件夾中檢查,但是初始Maven從哪裏來? Food for thought ... – Cliff 2010-02-25 14:09:00

0

不,他們意味着不同的事情:

在第一個例子,你說的那個定的存儲庫是所有存儲庫的一面鏡子,包括官方一個

在第二個示例中,您只需添加一個新的存儲庫。如果在本地存儲庫中找不到依賴關係,Maven將在之後在官方存儲庫中搜索此庫

因此,要強制使用內部存儲庫,您必須在您的settings.xml文件中配置mirror

這在the official documentation of Maven中有解釋。