2011-11-25 86 views
2

我們有一個用於緩存的本地artifactory存儲庫設置。它被配置在我們的項目,但是當我在尋找在構建過程中我看到這樣Maven檢查本地存儲庫,但從中央下載。爲什麼?

Downloading: http://ourserver/artifactory/our-repo/javax/transaction/jta/1.1/jta-1.1-sources.jar 
Downloading: http://repo1.maven.org/maven2/javax/transaction/jta/1.1/jta-1.1-sources.jar 
Downloaded: http://repo1.maven.org/maven2/javax/transaction/jta/1.1/jta-1.1-sources.jar (25 KB at 54.5 KB/sec) 

行的標準輸出所以看起來它試圖從本地存儲庫,並從Maven的中央下載JAR然後實際使用Maven Central)。

如果我在瀏覽器中複製本地存儲庫的URL,那麼我得到的jar沒有問題。

如果我檢查artifactory的管理應用程序,我可以看到人造物。

任何人都可以解釋爲什麼使用Maven Central?

UPDATE:到底發生了什麼和我所做的:

廣州澳凌的回答explaines爲什麼Maven的中央被訪問的。

mliebelt的評論暗示了我對我的解決方案:看起來我們的本地存儲庫是慢慢回答時,它必須首先下載神器。我配置了緩存以便在pom被請求時熱切地下載jar和源代碼。這應該減少從其他地方下載的工件數量。

+1

您是否將本地工件配置爲Maven中央緩存?是否配置「保留未使用的工件」?那麼緩存是否會被清空?如果您將URL複製到本地回購站,它會爲您下載並在本地找到它。若要查看緩存是否已填充,則必須使用緩存URL(應該像'http:// ourserver/artifactory/our-repo-cache/javax/...'。 – mliebelt

回答

5

Maven可以配置多個存儲庫。像在項目中一樣添加存儲庫不會使您已配置的任何存儲庫失效。默認情況下,每個人都可以在Maven Central中獲取存儲庫然後,Maven可以從任何可用的存儲庫中下載工件。

聽起來像你真正想要做的是建立一個mirror。您可以在settings.xml文件配置mirror

<mirrors> 
    <mirror> 
     <id>our-server-repo</id> 
     <name>our local repository</name> 
     <url>http://ourserver/artifactory/our-repo</url> 
     <mirrorOf>*</mirrorOf> 
    </mirror> 
</mirrors> 

需要注意的是,我們已經在mirrorOf元素中使用通配符(*)。這指定將通過指定的URL訪問所有存儲庫。有了這個配置,Maven將只能訪問您的本地Artifactory存儲庫。

+0

聽起來很有希望。明天 –

+1

這個真的解釋了訪問Maven Central的原因Thanx –

+0

你也可以在你的本地settings.xml中重寫'central'repository定義,這樣缺省配置的'central'不再可用。 – Brambo

相關問題