演示環(huán)境:
IntelliJ IDEA 2019.2.2
jdk1.8
maven3.5.3
內(nèi)容:
自己搭建項(xiàng)目時(shí),發(fā)現(xiàn)的一個(gè)如下問題。聚合工程,管理自己的子模塊和子模塊的依賴。
當(dāng)我在一個(gè)子模塊中clean,compiler或者install時(shí)都會(huì)報(bào)如下錯(cuò)誤。去網(wǎng)上找了下解決方案,按照所說,把父工程install一下就好了。
然后我興高采烈的去一試究竟,發(fā)現(xiàn)然并卵。housekeep父工程clean一下依然包如下錯(cuò)誤。install就更不用說了。
What! Why?
網(wǎng)上找了半天依然沒有解決。最后自己摸索終于找出了問題所在。

在我們使用idea集成maven之后給的clean,compiler或者install等操作,控制臺(tái)打印的報(bào)錯(cuò)日志太少了,就這么干巴巴的一句話(我的是這樣)
于是我就打開了idea下面的terminal,這個(gè)terminal的作用想必大家都不陌生,就是相當(dāng)于在該項(xiàng)目下打開CMD命令窗口(idea中terminal默認(rèn)是打開我們的CMD命令窗口)。

打開是這個(gè)樣子

然后我就使用maven的命令來clean一下這個(gè)housekeep父工程,結(jié)果如下

這個(gè)報(bào)錯(cuò)日志就比較詳細(xì),仔細(xì)一看,發(fā)現(xiàn)上面有這樣一段話

大概意思就是說我的housekeep-product-service子模塊找不到父級(jí)工程housekeep的pom文件
于是我就去找到我這個(gè)子項(xiàng)目

我建的項(xiàng)目時(shí)三層關(guān)系,紅圈是最外一層,也就是housekeep父工程。藍(lán)圈是二級(jí)父級(jí)項(xiàng)目housekeep-product繼承housekeep。而綠圈側(cè)是我的服務(wù)項(xiàng)目housekeep-product-service。
因?yàn)轫?xiàng)目依賴?yán)^承關(guān)系有點(diǎn)多,一時(shí)走神,把housekeep-product-service中的父級(jí)寫成了housekeep,應(yīng)該是寫成housekeep-product。按照正常來說這也沒什問題,無非就是繼承有點(diǎn)混亂。但因?yàn)閔ousekeep-product-service項(xiàng)目的所在的項(xiàng)目位置,和housekeep父級(jí)工程的pom文件所在的目錄,相距了兩層文件目錄,而我也沒有給這個(gè)父級(jí)依賴添加<relativePath>標(biāo)簽來指明pom文件的位置,該子工程項(xiàng)目就會(huì)默認(rèn)從當(dāng)前項(xiàng)目所在地的上一級(jí)目錄去找,很顯然是找不到的。這就導(dǎo)致了剛開始的問題。解決辦法可以加上<relativePath>標(biāo)簽來指明pom文件的位置或者這把父級(jí)改成housekeep-product。當(dāng)然后者是最好的。
第一種改法如下

之后在housekeep父級(jí)工程clean一下,就會(huì)成功。
第二種改法

在housekeep父級(jí)工程clean一下,依然肯定會(huì)成功。之后就是我把父級(jí)工程install一下,進(jìn)行之后操作。clean成功的前提下這個(gè)install一般都會(huì)成功,不成功,按照上面的步驟進(jìn)行對(duì)install的追查。
綜上所述,最終是想告訴小伙伴們,在idea中出現(xiàn)這種pom文件找不到的情況,我們可以使用maven命令去操作,報(bào)出的異常信息比較詳細(xì),我們能追根溯源,找到具體是哪那個(gè)子模塊有問題。
本人學(xué)疏才淺,以上是個(gè)人的一點(diǎn)見解,希望能幫助志同道合的小伙伴。
~~~~~~~~~~可以忽略~~~~~~~~~~~~~
發(fā)現(xiàn)一個(gè)不錯(cuò)的chatGPT網(wǎng)站,方便易用。
浙公網(wǎng)安備 33010602011771號(hào)