idea運行maven多模塊工程遇到的坑

工程結構

image.png

檢查webui模塊

image.png
注意紅框部分,正常的web項目,文件夾樣式應該以下圖所示:
image.png
注意,webapp文件夾是有一個藍色的小圓點,只有這樣才說明此模塊能夠被idea認爲是一個web模塊,那麼既然咱們的工程都不是web項目,那還啓動個毛線,因此咱們要先將藍色的小圓點搞出來。java

將模塊變成web工程

選中webui模塊按F4,彈出設置對話框,選擇Modules。
image.png
點擊image.png(必定是選中webui模塊,而後點擊加號),選擇Web
image.png
設置下圖中,紅色字體標註的路徑,先設置1,再設置2
image.png
點擊image.png,注意觀察彈出窗口的路徑
image.png
webui\web\WEB-INF\web.xml webui模塊中根本就不存在此路徑,因此此時要修改路徑,讓其指向正確的位置,還要選擇正確的Deployment descriptor version,這裏使用2.5。
點擊image.png在彈出的窗口中設置路徑。
image.png
找到webui模塊所在文件夾,而後找到webapp文件夾,找到web.xml(必定要找到web.xml)將其選中,點擊OK,設置完畢後如圖所示
image.png
設置紅色2標註的路徑,操做方式與1是同樣的,注意點是選中的路徑是到webapp文件夾,設置完畢以下圖所示
image.png
此時再看webapp文件夾,就出現了小藍點
image.pngweb

設置Artifacts

小藍點已經有了,但此時項目依舊不能運行在tomcat中,還得須要配置Artifacts,將其放到tomcat中(這麼說或許不標準,其實idea使用的是虛擬tmocat,並無將war包真正放到配置爲tomcat的webapp文件夾裏),才能運行。選中webui模塊按F4,選擇Artifacts
image.png,點擊image.png,而後如圖操做
image.png,點擊 From Modules...
image.png點擊OK
image.png調整紅框部門路徑,使其指向webui模塊裏的輸出路徑,咱們這裏使用xxx\webui\target\,此路徑爲webui模塊的輸出路徑,也能夠指定模塊名,好比xxx\webui\target\modulesName,通常不須要指定,由於會默認按照上面的Name,即xxx:war exploded。image.png,點擊OKtomcat

配置Tomcat Artifact

關於idea如何配置tomcat這裏就不演示了,默認爲tomcat已經配置完成。打開配置好的tomcat,點擊image.png選擇Artifact
image.png點擊OK
image.png點擊OKapp

啓動tomcat

在啓動過程當中會報錯,異常爲 java.lang.ClassNotFoundException: Cannot find class:com.xxx.xxx.A。因爲webui最終是被髮布的war包,那麼此war包中會依賴其餘模塊,因此要在Artifacts配置中設置依賴的模塊。
image.png
注意classes,要將其餘模塊的依賴加入到classes下。
將右側模塊展開
image.png
雙擊各個模塊 compile output 部分,也就是將各個模塊的編譯輸出路徑加入到webui模塊的classes裏
image.png,點擊OK,再嘗試啓動tomcat,正常狀況下應該啓動成功了。若是還啓動不成功,就clean項目,而後在啓動。webapp

相關文章
相關標籤/搜索