maven本地倉庫中的*.jar.lastUpdated 處理

       在eclipse中使用maven來管理依賴的jar文件已是常態,但經常會遇到eclipse中的控制檯輸出警告:Missing artifact...,然後項目pom.xml文件被標紅,進入文件鼠標移動到紅色標記處,也提示missing  artifact。到本地maven倉庫中,對應jar包目錄下查看,有xx.jar.lastUpdated類的文件,這種文件肯定是不能用,相當於一種下載時的臨時文件,當下載jar文件出現中斷,就會有這種文件。

       基本處理方法:刪除這類文件,找個網絡好的環境(能連接到遠程maven倉庫),重新下載。

       本文要說明的是另一種情況,jar文件本身已經下載完整,只是我們換了個網絡環境(如原來在公司內網,使用的是公司私服nexus,現在換到了外網)。eclipse在啓動的時候一般會自動進行maven builder。maven index 更新,依賴檢查等等。此時的外網因無法連接到原公司的私服nexus,導致相關檢查失敗。提示missing  artifact。這時jar包雖都在,項目卻無法調試運行等操作。曾經就遇到這類問題,在甲方內網進行開發出現這類問題。晚上回到住處用vpn連接公司內網,進行項目的運行、調試。後來受不了這種搞法,想找個一勞永逸的辦法。

     方法一出現:刪除jar目錄下的_maven.repositories文件,該文件是記錄的jar的下載相關信息。以後都不會出現missing  artifact的問題。

    上面說的是換了網絡環境的情形,還有另一種情形也會出現這類問題。就是修改了本地maven配置中的遠程倉庫地址。接着上面的情形說。換到外網後,很自然的想到一個方法就是修改maven配置中的遠程倉庫地址,原來用公司私服,現在肯定是不行了。換個阿里的鏡像試試。結果是大部分jar包可以使用,沒有提示miss,但仍有少量jar包提示。細看這些jar包就知道,這些是自建jar包後加入私服nexus的。阿里鏡像肯定是不會有的。

      之前寫過類似的文章,就是對比下載好的jar包目錄下的_maven.repositories文件內容,能發現些端倪。

     第二種方法出現:對比_maven.repositories後發現,更新失敗產生astUpdated 文件後,該文件的內容可能會如下:

     xxx-3.0.jar>   

    正確的應該是  xxx-3.0.jar> Nexus=            “>”後必須有內容,不能空。不一定是Nexus=,也可能是其他如:

    xxx-3.0.jar>alimaven=

     所以按照正確的_maven.repositories文件修改即可

     再說下eclipse在啓動的時候自動進行maven builder。maven index 更新,依賴檢查做了些什麼?(這些也是網上看到相關信息,未自己驗證https://blog.csdn.net/u011990675/article/details/80066897

    即使jar包是已經下載好的,之前使用也沒問題,下次啓動eclipse時,maven  builder開始,會檢查_maven.repositories文件中jar包來源哪個庫,就是“>”後面的內容,並和本地maven配置文件setting.xml中的遠程倉庫進行對比,如果一樣,且網絡通暢。就能正常更新。如果不一樣,maven就會以setting.xml配置的遠程倉庫再下載一次。能下載下來就沒問題,如下:

mysql-connector-java-5.1.25.pom>Nexus=
mysql-connector-java-5.1.25.jar>Nexus=
mysql-connector-java-5.1.25.jar>alimaven=
mysql-connector-java-5.1.25.pom>alimaven=

 

如果下載不了,就會提示missing  artifact。特別是自己的私有jar包,之前是公司內網使用,沒問題。換到外網,使用阿里鏡像。maven就會到阿里鏡像再去找一次,自然是找不到。這樣造成雖然jar包存在,卻還是提示missing  artifact,生成了lastUpdated文件。所以可以把原來的xxx.jar>Nexus=  修改爲xxx.jar>alimaven=,這樣maven就認爲是從setting.xml中的遠程倉庫下載的,不用再去找了。

 總結:eclipse在啓動,maven builder時,會檢查pom.xml中的依賴jar包,是否在本地有了。沒有去setting.xml

中配置的倉庫下載。本地有了,判斷是不是來源於setting.xml中配置的倉庫,是就不用下載了。不是就要重新下載

 

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章