2016-11-06 43 views
1

這是我的基本設置:爲什麼gradle在解析依賴關係時將依賴項推送到我的maven回購庫?

// Dependencies 
repositories { 
    maven { url "http://MYREPO.." } 
    jcenter() 
    mavenLocal() 
} 

dependencies { 
    compile 'org.bytedeco.javacpp-presets:opencv:3.1.0-1.2' 
} 

從我的解決依賴是如何工作的,應該的gradle試圖在我的回購首先尋求的依賴,那麼在jcentral()的理解,然後在mavenLocal。

相反,我得到這個輸出上./gradlew組裝:

:compileJava 
Download http://MYREPO.../org/bytedeco/javacpp-presets/opencv/3.1.0-1.2/opencv-3.1.0-1.2.jar 
:processResources UP-TO-DATE 
:classes 
:jar UP-TO-DATE 
:assemble UP-TO-DATE 

BUILD SUCCESSFUL 

事實上,當我看看我的倉庫裏看個究竟,我發現OpenCV的依賴被推作爲的後果依賴性解決方案。

我期望的是相反的工件從jcenter下載,它實際上存在。

我正在使用apache archiva。

爲什麼會發生這種情況? 這種行爲記錄在某個地方嗎? 如果這是我的存儲庫設置或使用gradle腳本時出現問題,我不會不確定。

+0

您的回購鏡像是否是中央存儲庫? – tddmonkey

+0

這可能是,這是否意味着每個工件都會被推送到我的倉庫,而不是直接從jcenter下載? – Lake

回答

2

如果你的版本庫鏡像中央回購,然後會發生什麼情況是這樣的:

  1. 搖籃試圖從你的回購找到的依賴
  2. 你的回購確實有它,所以它接觸上游回購該它鏡像
  3. 依賴從上游回購下載並在您的回購
  4. 依賴緩存是交給搖籃

這永遠不會離開搖籃機會嘗試聯繫jcenter直接:)

+0

感謝您的回覆:)我可以想象步驟1),2)和4),但是3)是強制性的還是應該可配置的?我會考慮沒有我的個人回購的可能性充斥着它使用它時緩存的每一個依賴項:) – Lake

+0

我相信2)和3)是相當連接的:)你可以嘗試關閉回購鏡像。沒有使用Archiva,所以不知道如何。 – Nikem

+0

我終於找到了設置。感謝您的概念指導^^ – Lake