2010-05-05 25 views
7

依賴有沒有辦法告訴行家(做MVN包MVN網站或...時)不解決從本地資源庫的依賴?如何防止Maven來解決本地倉庫

此問題的背景:有時我遇到問題,以前的緩存依賴關係(例如SomeProject-0.7-ALPHA)在遠程存儲庫中不再可用。在我的本地構建中,一切依然正常,因爲之前已經緩存了依賴關係。只要我與其他人分享我的POM,他們可能會陷入困境,因爲他們沒有該依賴項的緩存版本,並且依賴項無法再從遠程儲存庫中解析。

任何幫助將不勝感激。提前致謝!

+0

爲什麼遠程回購中不再提供依賴關係?如果有更新的版本,爲什麼不簡單升級呢?如果新版本不兼容,爲什麼要刪除舊版本? – 2010-05-05 11:07:09

+0

問題是檢測到舊版本不再可用的事實。我無法手動檢查所有的依賴關係,因爲我有不再可用的依賴項的本地緩存版本maven不會告訴我,有問題。 – 2010-05-05 11:12:44

+0

我明白你的直接問題;然而,我試圖注意到我的問題,恕我直言,可能有背後的流程問題。在這種情況下,解決根本原因可能更好,而不是尋找解決方法。 – 2010-05-05 11:19:23

回答

12

有沒有辦法告訴maven(當做mvn包,mvn站點或...)不解決從本地存儲庫的依賴關係?

不,這就是整個依賴關係解析如何工作(通過本地存儲庫)。

當遠程存儲庫中以前緩存的依賴項(例如SomeProject-0.7-ALPHA)不再可用時,有時會遇到問題。

對不起,說明明顯,但是從遠程倉庫取出的依賴是一個可怕的做法,導致了......好吧,你所面對的那種煩惱。如果可能的話,避免這樣做。

只要我與他人共享我的pom,他們可能會陷入困境,因爲他們沒有該依賴項的緩存版本,並且依賴項無法再從遠程存儲庫中解析。

一種方法來檢查,事情會爲別人打工。將淨化項目你會從你的本地庫共享和依賴關係重新加以解決。當然,手動操作會非常痛苦,但好消息是Maven Dependency Plugin的目標是purge-local-repository

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:purge-local-repository \ 
    -DreResolve=true \ 
    -DactTransitively=true \ 
    -Dverbose=true 

如果失敗了,那麼你知道缺少某些東西,不能再解決了,這基本上是你想知道的。但是你也失去了它,所以如果這對你很重要,請備份你的存儲庫。

+0

接受,作爲purge-local-repository是我一直在尋找的東西。希望我將來不再需要它。謝謝! – 2010-05-05 20:18:27

+0

@Nils不客氣。如果您認爲這對於接受的答案有意義,請隨時[upvote too](http://meta.stackexchange.com/questions/686/accepting-answer-without-upvoting):) – 2010-05-05 20:44:42

+0

插件項目的情況如何正在使用。插件是否有清除? purge-local-repository清除依賴項,而不是插件。 – 2012-02-24 09:17:21

2

maven構建的基本測試是刪除本地存儲庫.m2/repository並嘗試構建(mvn package)並查看它是否工作。如果沒有,你在這裏還有其他問題。如前所述,問題似乎是您正在處理的過程。如果遠程存儲庫中不再有依賴關係,則還有其他問題。您是否在使用Repository Manager,例如Nexus,Archiva,Artifactory?

+0

我在考慮刪除/移動整個本地存儲庫,事實上,這正是我在某些情況下所做的,但這並不是最優的。我沒有使用Repository Manager。我正在使用的存儲庫不在我的控制之下。我會首先考慮你的意見和關於我的過程的事情。我認爲可能有一個標誌關閉本地存儲庫,但我明白,這只是一個解決方法...感謝您的幫助! – 2010-05-05 11:48:04

+1

沒有標誌來關閉本地存儲庫的使用。如果你沒有親自使用Repo Manager,你應該考慮在公司設立。您可以使用本地存儲庫執行的唯一操作是更改位置,但就是這樣。 – khmarbaise 2010-05-05 12:20:32

+0

+1建議設立公司/項目回購 - 我即將建議相同:-) – 2010-05-05 12:51:42