idea 與 maven 使用過程中遇到的問題及解決方案

1. maven項目導入idea報ComponentLookupException異常

1.1. 問題描述

最近將IDEA 升級到 IntelliJ IDEA 2021.3.2,在將maven項目導入IDEA後,maven build時報如下異常:

org.codehaus.plexus.component.repository.exception.ComponentLookupException: com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) Error injecting constructor, java.lang.NoSuchMethodError: org.apache.maven.model.validation.DefaultModelValidator: method <init>()V not found
  at org.jetbrains.idea.maven.server.embedder.CustomModelValidator.<init>(Unknown Source)
  while locating org.jetbrains.idea.maven.server.embedder.CustomModelValidator
  at ClassRealm[maven.ext, parent: ClassRealm[plexus.core, parent: null]] (via modules: org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
  while locating org.apache.maven.model.validation.ModelValidator annotated with @com.google.inject.name.Named(value=ide)
1 error
      role: org.apache.maven.model.validation.ModelValidator
  roleHint: ide

1.2.解決方案

這個問題是IntelliJ IDEA 2021.3.2 不兼容導致的。 我使用的Maven版本是3.8.3, 將Maven版本降至3.8.1 或 使用IDEA Bundled(Maven3)即可解決。

Maven 3.x 下載地址

在這裡插入圖片描述

2. IDEA無法加載maven本地倉庫的文件

2.1.問題描述

如果公司 Nexus私服 裡面沒有對應的依賴jar包,但本地倉庫有_remote.repositories文件,
這種情況下IDEA無法加載本地的jar包,導致MAVEN依賴變成紅色

在這裡插入圖片描述

_remote.repositories 內容類似如下:

在這裡插入圖片描述

2.2.解決方案

查找並刪除所有_remote.repositories文件 clear_remote.repositories.bat

set REPOSITORY_PATH=D:\maven\repository
echo is finding all _remote.repositories file ...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*_remote.repositories*"') do (
    del /s /q %%i
)
echo delete all _remote.repositories has finished
pause

3.刪除maven下載失敗的jar包

3.1. 問題描述

maven針對更新失敗的依賴,在對應的文件夾中都生成瞭lastUpdated後綴結尾的文件,這些文件有時會導致IDEA不能正常加載這些本地依賴。

在這裡插入圖片描述

3.2.解決方案

查找並刪除所有包含lastUpdated的文件 clear_lastUpdated.bat

set REPOSITORY_PATH=D:\maven\repository
echo is finding all lastUpdated file ...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
    del /s /q %%i
)
echo delete all lastUpdated has finished
pause

4. 刪除_maven.repositories文件

4.1.問題描述

Maven tries to update your jar from the old location (as saved in _maven.repositories) and fails. The presumtion here is that the same aftifact on a different remote repository might be different.

Maven試圖從舊位置(保存在_maven.repositories中)更新jar,但失敗瞭。這裡的假設是,相同的aftifact 在不同的遠程存儲庫上可能是不同的。

有時此文件會導致jar更新或加載失敗

4.2.解決方案

查找並刪除所有包含_maven.repositories的文件 clear_maven.repositories.bat

set REPOSITORY_PATH=D:\maven\repository
echo is finding all _maven.repositories file ...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*_maven.repositories*"') do (
    del /s /q %%i
)
echo delete all _maven.repositories has finished
pause

到此這篇關於idea 與 maven 使用過程中遇到的坑的文章就介紹到這瞭,更多相關idea maven使用內容請搜索LevelAH以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持LevelAH!

推薦閱讀: