1. 程式人生 > 程式設計 >如何處理maven倉庫中字尾LastUpdated檔案

如何處理maven倉庫中字尾LastUpdated檔案

一、背景

  新做了一個的需求,需要在SpringBoot專案中引入了多個依賴,然後就感覺idea下載依賴包的時間很漫長,然後我就網上找了解決辦法——使用國內的阿里雲映象,後來呢,就出現了這個問題。刪除該檔案也未曾生效,依然會重新生成。

二、產生的原因

  原來每次在更新maven專案的時候,每一個jar包路徑下的_remote.repositories檔案都會同setting.xml中設定的倉庫地址id進行判斷,如果沒有匹配,會自動更新該jar包的相關檔案,如果未聯網則會出現jar無法發現的錯誤,導致即使jar存在,maven專案也無法使用該jar的情況。如果使用公司的內網倉庫,_remote.repositories檔案變為_maven.repositories。Maven在下載倉庫中找不到相應資源時,會生成一個.lastUpdated為字尾的檔案。如果這個.lastUpdated檔案存在,那麼即使換一個有資源的倉庫後,Maven依然不會去下載新資源。

三、解決辦法

專案統一使用一個遠端倉庫的地址,阿里雲或者其他公網映象。修改方法:maven安裝包——>conf資料夾——>setting.xml檔案——>mirror節點

  1、辦法一:把本地倉庫裡的依賴包全清空,然後讓專案重新下載所有依賴——一次性解決,可靠;
  2、辦法二:找到報錯的依賴包的位置,刪除LastUpdated字尾的檔案,讓idea單獨下載——如果有多個報錯的依賴包,需要操作多次;
  3、辦法三:使用指令碼,一次性清除所有的LastUpdated字尾的檔案。 

# windows指令碼
@echo off
rem create by NettQun
 
rem 這裡寫你的倉庫路徑
set REPOSITORY_PATH=D:\Java\maven-repository\maven-aliyun\repository
rem 正在搜尋...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
  echo %%i
  del /s /q "%%i"
)
rem 搜尋完畢
pause
# linux指令碼
 
# 這裡寫你的倉庫路徑
REPOSITORY_PATH=~/Documents/tools/repository
echo 正在搜尋...
find $REPOSITORY_PATH -name "*lastUpdated*" | xargs rm -fr
echo 搜尋完

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。