演示環境:
IntelliJ IDEA 2019.2.2
jdk1.8
maven3.5.3
內容:
自己搭建項目時,發現的一個如下問題。聚合工程,管理自己的子模塊和子模塊的依賴。
當我在一個子模塊中clean,compiler或者install時都會報如下錯誤。去網上找了下解決方案,按照所說,把父工程install一下就好了。
然后我興高采烈的去一試究竟,發現然並卵。housekeep父工程clean一下依然包如下錯誤。install就更不用說了。
What! Why?
網上找了半天依然沒有解決。最后自己摸索終於找出了問題所在。
在我們使用idea集成maven之后給的clean,compiler或者install等操作,控制台打印的報錯日志太少了,就這么干巴巴的一句話(我的是這樣)
於是我就打開了idea下面的terminal,這個terminal的作用想必大家都不陌生,就是相當於在該項目下打開CMD命令窗口(idea中terminal默認是打開我們的CMD命令窗口)。
打開是這個樣子
然后我就使用maven的命令來clean一下這個housekeep父工程,結果如下
這個報錯日志就比較詳細,仔細一看,發現上面有這樣一段話
大概意思就是說我的housekeep-product-service子模塊找不到父級工程housekeep的pom文件
於是我就去找到我這個子項目
我建的項目時三層關系,紅圈是最外一層,也就是housekeep父工程。藍圈是二級父級項目housekeep-product繼承housekeep。而綠圈側是我的服務項目housekeep-product-service。
因為項目依賴繼承關系有點多,一時走神,把housekeep-product-service中的父級寫成了housekeep,應該是寫成housekeep-product。按照正常來說這也沒什問題,無非就是繼承有點混亂。但因為housekeep-product-service項目的所在的項目位置,和housekeep父級工程的pom文件所在的目錄,相距了兩層文件目錄,而我也沒有給這個父級依賴添加<relativePath>標簽來指明pom文件的位置,該子工程項目就會默認從當前項目所在地的上一級目錄去找,很顯然是找不到的。這就導致了剛開始的問題。解決辦法可以加上<relativePath>標簽來指明pom文件的位置或者這把父級改成housekeep-product。當然后者是最好的。
第一種改法如下
之后在housekeep父級工程clean一下,就會成功。
第二種改法
在housekeep父級工程clean一下,依然肯定會成功。之后就是我把父級工程install一下,進行之后操作。clean成功的前提下這個install一般都會成功,不成功,按照上面的步驟進行對install的追查。
綜上所述,最終是想告訴小伙伴們,在idea中出現這種pom文件找不到的情況,我們可以使用maven命令去操作,報出的異常信息比較詳細,我們能追根溯源,找到具體是哪那個子模塊有問題。
本人學疏才淺,以上是個人的一點見解,希望能幫助志同道合的小伙伴。