解決 IDEA 2020.2 reading pom.xml 卡死問(wèn)題
一、解決方案搜尋
剛出 IDEA 2020.2 版本的時(shí)候,當(dāng)時(shí)第一時(shí)間更新了。打開(kāi)公司的項(xiàng)目,沒(méi)啥問(wèn)題,但是當(dāng)打開(kāi)自己的項(xiàng)目的時(shí)候,就會(huì)看到右下角顯示 reading pom.xml 然后就卡死了。很多次都這樣,后來(lái)就回滾了 2020.1,直到今天才來(lái)再次嘗試發(fā)現(xiàn)原因和解決方案。
1.1 導(dǎo)致原因的設(shè)定
如果有幸點(diǎn)進(jìn)了 setting 中的 Maven 選項(xiàng)卡,那么可以看到 'Maven home dictionary' 也就是自定義的本地 Maven 路徑被改成了 C:Users{你的用戶名}.m2wrapperdistsapache-maven-3.6.3-bin1iopthnavndlasol9gbrbg6bf2 文件下的 Maven 路徑,或者是 IDEA 默認(rèn) Maven 路徑。
本以為把這個(gè)改了就可以了,但是下次啟動(dòng)還是會(huì)被改回來(lái)。但是啟動(dòng)項(xiàng)目的時(shí)候,直接打開(kāi)公司的卻沒(méi)啥事。
1.2 搜索到的解決方案
也過(guò)了一段時(shí)間了,網(wǎng)上也有解決方案了,目前解決方案為兩種:
一種是刪除項(xiàng)目?jī)?nèi)的 .mvn 文件夾(或者刪除里面的 maven-wrapper.properties 文件)
還有一種是來(lái)到 C:Users{你的用戶名}.m2wrapperdistsapache-maven-3.6.3-bin1iopthnavndlasol9gbrbg6bf2 文件夾下,也就是 setting 中 Maven 指向的文件夾,把已有本地的 maven 包復(fù)制到其中。
至此,解決問(wèn)題應(yīng)該是夠用了。但是這兩個(gè)是不是好的方案,下面進(jìn)行分析。
二、導(dǎo)致問(wèn)題的原因
2.1 IDEA 2020.1 和 2020.2 的區(qū)別
可以去看 JetBrains 的官網(wǎng)的介紹,也有中文的更新說(shuō)明,以下截圖來(lái)自于官網(wǎng)。
從圖片中可以看到,IDEA 2020.2 有了對(duì) Maven Wrapper 的支持。而它就是導(dǎo)致原因的所在。
2.2 IDEA 中的 Maven Wrapper
這個(gè) Maven Wrapper 和 Gradle Wrapper 類(lèi)似,直白點(diǎn)就是自帶了一個(gè) Maven/Gradle 的包,省去了安裝、版本不一致等問(wèn)題。
而 IDEA 2020.2 支持了這個(gè)功能,也就是說(shuō),差不多等于不用再手動(dòng)配置 Maven 了,有了項(xiàng)目下的 .mvn/wrapper/maven-wrapper.properties就能直接下載項(xiàng)目中所需的 Maven 了。
打開(kāi) maven-wrapper.properties 文件,可以看到一般里面就只有兩行(有些項(xiàng)目可能沒(méi)有,可以去嘗試 new 一個(gè)項(xiàng)目,比如 Spring Boot,就能看到)。
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zipwrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
可以看到里面有兩個(gè) url 的網(wǎng)絡(luò)地址,也就是這個(gè)項(xiàng)目會(huì)去從這個(gè)地址下載所需的文件。那么,如果直接打開(kāi)這個(gè) url 進(jìn)行下載呢?于是我嘗試了一下,如圖:
可以看到,速度為幾 KB/s,也就是說(shuō),當(dāng)新建了一個(gè)項(xiàng)目的時(shí)候,它在 reading pom.xml 的時(shí)候,很有可能在以這個(gè)速度在下載,甚至可能下載失敗了。如果有能力,可以試試給 IDEA 走代理,或者換網(wǎng)絡(luò),然后重新 reading pom.xml,這時(shí)候大概率是不會(huì)卡死的,當(dāng)然也有可能最后完成的時(shí)候會(huì)報(bào)錯(cuò)。
2.3 Maven 的下載路徑
從網(wǎng)絡(luò)下載 Maven,必然要保存到本地的,那保存在哪里呢?就是在 C:Users{你的用戶名}.m2wrapperdistsapache-maven-3.6.3-bin1iopthnavndlasol9gbrbg6bf2 這里。所以之前的解決方案中,復(fù)制一份自己的 Maven 到這個(gè)文件夾,是能解決問(wèn)題的。
2.4 .mvn 文件夾
里面只有一個(gè) Maven Wrapper 的 jar 和一個(gè) maven-wrapper.properties。如果項(xiàng)目中有這個(gè)文件夾的話,那么手動(dòng)在 setting 中設(shè)置 Maven 路徑的話,是無(wú)效的,最后還是會(huì)更改到 C:Users{你的用戶名}.m2wrapperdistsapache-maven-3.6.3-bin1iopthnavndlasol9gbrbg6bf2 或者 IDEA 的默認(rèn)路徑 中,所以刪除 .mvn 文件夾后(或者刪除 maven-wrapper.properties 文件),就能解決問(wèn)題了。
三、解決方案評(píng)估
3.1 方案一:刪除 .mvn 文件夾
這個(gè)方法可以使得 IDEA 能夠使用自己的 Maven 路徑。如果自己的 Maven 中配置了很多設(shè)置的話,建議把 .mvn 文件夾刪除。
但是這個(gè)方法有個(gè)弊端,就是當(dāng)新建一個(gè)工程的時(shí)候,IDEA 會(huì)默認(rèn)創(chuàng)建 .mvn 文件夾,也就是說(shuō),手速不夠快的話,還是會(huì)卡死在 reading pom.xml。
3.2 方案二:復(fù)制 Maven 到 .m2 文件夾下
這個(gè)方法解決了新建工程的時(shí)候下載 Maven 的問(wèn)題,不會(huì)因?yàn)榫W(wǎng)絡(luò)問(wèn)題而卡在下載 Maven。但是這個(gè)方法需要把自己配置的 Maven 復(fù)制到 C:Users{你的用戶名}.m2wrapperdistsapache-maven-3.6.3-bin1iopthnavndlasol9gbrbg6bf2 文件夾中,IDEA 會(huì)默認(rèn)使用這個(gè)路徑下的 Maven,不能自定義,可能對(duì)于某些人會(huì)比較難受。
3.3 方案三:使用一個(gè)好的網(wǎng)絡(luò)
導(dǎo)致問(wèn)題的原因就是下載 Maven 的原因,也就是說(shuō),找一個(gè)能下載 Maven 的網(wǎng)絡(luò)的話,就能避免卡死在 reading pom.xml 了。
3.4 前兩種方案結(jié)合
方案一和方案二結(jié)合的話,首先確保新建工程的時(shí)候,不會(huì)因?yàn)橄螺d而卡死,從而能將工程新建起來(lái);然后將 .mvn 刪除之后就能使用自己配置的 Maven 了,這樣就不會(huì)因?yàn)橛昧四J(rèn)路徑下的 Maven 而不舒服了。
相關(guān)文章:
1. 5個(gè)HTML5的常用本地存儲(chǔ)方式詳解與介紹2. 原生js XMLhttprequest請(qǐng)求onreadystatechange執(zhí)行兩次的解決3. 匹配模式 - XSL教程 - 44. 三個(gè)不常見(jiàn)的 HTML5 實(shí)用新特性簡(jiǎn)介5. 如何在CSS中繪制曲線圖形及展示動(dòng)畫(huà)6. asp在iis7報(bào)錯(cuò)行號(hào)不準(zhǔn)問(wèn)題的解決方法7. vue與django(drf)實(shí)現(xiàn)文件上傳下載功能全過(guò)程8. HTML中的XML數(shù)據(jù)島記錄編輯與添加9. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法10. CSS代碼檢查工具stylelint的使用方法詳解
