1. 程式人生 > >maven學習--maven編譯時包無法下載的問題

maven學習--maven編譯時包無法下載的問題

前言

今天在編譯執行一個maven專案時編譯失敗,查看了一下報錯原因,如下:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (checkstyle) on project labmanagement: Execution checkstyle of goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check failed: Plugin org.apache.maven.plugins
:maven-checkstyle-plugin:2.17 or one of its dependencies could not be resolved: Could not transfer artifact com.google.guava:guava:jar:18.0 from/to central (https://repo.maven.apache.org/maven2): GET request of: com/google/guava/guava/18.0/guava-18.0.jar from central failed: Premature end of Content-Length delimited message body (expected: 2256213
; received: 1899614 ->

截圖如下:
failure

問題來源

那一大段報錯說了個什麼事

就是一句話:maven-resources-plugin:2.5的相關依賴無法解決,更直白一點說就是要下載的包無法下載

原因是什麼

通過上網查詢資料和詢問老師學長,總結出一下幾個可能的原因:
a.網路不穩定(網路不好時maven在下載時經常會出錯);
b.maven的中央倉庫不穩定,導致要下載的包暫時無法訪問等等;
c.要下載的包在maven的本地倉庫已經有了,但是下載不完整或者是殘缺(這通常也是由於網路不好導致),導致無法使用(原因:maven在下載需要的包時,它首先會檢視本地是否已經有了要下載的包,如果它發現本地已經有了要下載的包,它就會主動選擇使用本地的包,不會再去遠端倉庫下載了,但是本地的包由於各種原因導致不完整或者殘缺,所以找到後沒法使用,自然就會報錯了

),也會出錯。

如何解決

解決方法一(針對a,b兩種情況)

解決的方法就很簡單了,手動下載該maven-resources-plugin-2.5.jar包,然後手工建立~/.m2/repository/org/apache/maven/plugins/maven-resources-plugin/2.5目錄,並將該jar包移動到該目錄下即可。
如下圖:
jar

解決方法二(針對c情況)

將本地的那個已經下載下來的殘缺的包或目錄手動刪掉,然後在maven compile或者手動下載一個完整的該包。

參考資料

總結反思

遇到問題要學會問一下為什麼,以後要養一個習慣:解決一個問題之前先明白造成問題的原因;還有多分析多總結,逐步學會舉一反三。