2012-05-07 155 views
4

我剛剛編輯了一個項目的pom.xml文件的<repositories />部分,刪除了一些我認爲不需要的回購。Maven - 如何驗證聲明存儲庫中的依賴關係?

我想驗證聲明的依賴關係在可用的存儲庫中仍然可以解析。

但是,所有聲明的依賴關係都可以在我的本地倉庫中找到,因此任何構建的嘗試都將使用本地倉庫。

我不想簡單地核實我的本地回購,因爲從頭開始下載所有依賴關係需要花費很多時間。

同樣,我不想讓maven試圖下載所有的依賴項,我只是希望它確保它們都是可解析的(包括傳遞依賴項)。

我該怎麼做?

回答

1

清空您的本地回購(rm -rf〜/ .m2/repository)並構建。

你無法解決這個問題很耗時。沒有辦法知道某個特定的工件是否在特定的外部回購庫中,而無需下載它。如果maven只是問'你有X嗎?'你會從破損的文物中獲得誤報,這是在某些回購中流行的。

+0

謝謝你的答案,但我在我的問題,我不想清空本地回購特別提到 - 它可能需要幾個小時重新下載的工件。此外,這似乎是驗證一個pom的非常殘酷的方式。 –

+1

如果需要花費數小時,則應使用回購管理器。 – khmarbaise

+0

如果你沒有一個,你可以將它移開,測試,並將其移回 – Miquel

2

我可以說的第一件事是not to define repositories in a pom,因爲這會給使用這個項目的其他人帶來很多問題。此外,我建議使用存儲庫管理器,它將解決問題並提高下載過程中的性能,並簡化對這種情況的檢查,這意味着只需刪除本地存儲庫並嘗試構建。

0

那麼,如果你願意敲你自己的插件,那麼想到的東西就是讓插件只解決校驗和。在相應jar/war/zip /任何工件已被部署之後,這些校驗和僅被部署到遠程存儲庫。

如果需要幾個小時才能下載所有工件,那麼您顯然需要像Nexus或Artifactory這樣的庫管理器,就像Karl-Heinz已經提出的那樣。它會保留遠程文件的緩存版本並從中下載,這將是一個時間問題。

0

我假設你已經嘗試mvn驗證-U?我不是偉大的專家,但這就是我想要的。 (儘管我經常爆發我的本地非第三方報告,以確保構建將適用於其他人)。