2009-12-17 57 views
0

我使用Apache Archiva建立了一個Maven 2存儲庫(調用'dev repository'),該存儲庫保存了我的私有項目的工件。關於Maven2存儲庫鏡像的問題

如果我構建了我自己的項目的工件,例如說group1:cat,Cat取決於{group1:dog,commons:collection}。 group1:cat和group1:dog分別位於開發庫中,commons:集合在Central中。現在,當我構建group1:cat時,maven將獲取group1:dog和commons:collection,問題是maven將始終在開發庫和中央存儲庫中搜索以查找依賴關係,但是我想要的是搜索group1:僅限於開發存儲庫,僅在中央存儲庫中搜索commons:collection。我有中央鏡像說central-mirror1和central-mirror2,所以如何配置maven,所以它會搜索commons:默認中央存儲庫和central-mirror-1,2等集合,並且根本不會打擾我的開發存儲庫?

回答

1

(...)我想要的是搜索group1:只在開發存儲庫中使用dog,並且僅在中央存儲庫中搜索commons:collection。

我不知道如何實現這一點,我不認爲這是可能的。 maven如何能夠知道給定工件的「源」存儲庫?

但實際上,你爲什麼不讓所有事情都通過Archiva?對於所有請求不使用Archiva有什麼意義?如果你不想Maven檢查你的依賴庫的兩個版本庫,這似乎是一個非常明顯的解決方案。此外,人們通常不希望直接依賴企業環境中的中心環節(例如,如果發生故障,您再也無法工作)。不,真的,我不明白。

所以,我剛剛宣佈Archiva作爲mirrorOf所有存儲庫,就像這樣:

<settings> 
    ... 
    <mirrors> 
    <mirror> 
     <id>internal-repository</id> 
     <name>Maven Repository Manager running on repo.mycompany.com</name> 
     <url>http://repo.mycompany.com/proxy</url> 
     <mirrorOf>*</mirrorOf> 
    </mirror> 
    </mirrors> 
    ... 
</settings> 
1

我的設置使用我的本地Archiva實例到代理中央(和其他第三方存儲庫)。在我的超級朋友中,我改變了我的存儲庫,只指向我的本地Archiva,而不是搜索中心。一切都通過我的本地代理進入。

這不完全是你要求的,但我認爲這是一個適當的設置。

然後,您可以使用Archiva的黑/白名單來告訴它在哪裏搜索東西。