2013-04-22 201 views
0

我有一個關於gradle如何解決我的依賴性的問題。Gradle依賴關係解析

我有四個存儲庫,我需要調查不同的罐子,五個計數Maven中央。因此,在gradle.build我的回購statment看起來是這樣的:

repositories { 

    maven { 
    url 'urltoRepoA' 
    artifactUrls mavenLocal() 
    } 
    maven { 
    url 'urltoRepoB' 
    artifactUrls mavenLocal() 
    } 
    maven { 
    url 'urltoRepoC' 
    artifactUrls mavenLocal() 
    } 
    maven { 
    url 'urltoRepoD' 
    artifactUrls mavenLocal() 
    } 

    mavenCentral() 
} 

我想做什麼acheive: 查找無論是在遠程倉庫和本地Maven倉庫的依賴。

,但我得到下面這個錯誤,這是一個罐子應該從repoA解決(repoA是行家中心的一面鏡子,而我已經驗證了這個罐子在那裏可以找到)

[16:43:10][Step 1/3] > Could not resolve all dependencies for configuration ':runtime'. 
[16:43:10][Step 1/3] > Artifact 'junit:junit:[email protected]' not found. 

根據到我在梯級手冊中讀到的內容是它試圖解決來自同一個回購的所有依賴關係。那是我跑到這裏來的嗎?或者我沒有正確配置gradle?

回答

1

我懷疑你的gradle配置中的其他地方有什麼問題。我認爲你誤解了如何解決文物。

按照gradle docs(見8.5節)

一個項目可以具有多個存儲庫。 Gradle將按照指定的順序在每個存儲庫中查找 依賴項, 在包含請求的模塊的第一個存儲庫中停止。

事實上,在gradle腳本中有多個存儲庫是很常見的。

+0

是的,我也明白這一點,有什麼錯誤的是我: '您可以配置任意數量的存儲庫,每個存儲庫都由Gradle獨立處理。如果Gradle在特定的存儲庫中找到模塊描述符,它將嘗試從同一個存儲庫下載該模塊的所有工件。「我不太清楚這意味着什麼,這是否意味着如果我依賴工件A, B和C,如果Gradle在第一個回購中發現A,它會在那裏停止?或者它也會考慮其他回購,我感覺它沒有:S – Karaaie 2013-04-24 17:59:59

+0

Gradle會考慮其他存儲庫。該文檔說的是,如果Gradle在庫A中找到POM,它也希望在A中找到相應的Jar。通過'artifactUrls',您可以讓Gradle在Jar的其他庫中查找。只有在需要使用由本地Maven構建安裝的工件時才應使用'mavenLocal()'。否則,使用它沒有優勢(只有缺點)。可能你應該刪除所有'artifactUrl'行。如果您仍然遇到解決問題,請嘗試使用'--refresh-dependencies'。 – 2013-04-27 06:24:44