Delegate IDE build/run actions to maven 配置會影響程式執行嗎?
背景
IDEA 的 build/run 動作如果委託給了 maven 之後,會影響程式執行嗎?
本文來介紹一下這個問題。答案是,可能會,如果 pom.xml 中配置的 build 有額外的執行動作,就會影響程式執行,甚至會導致執行失敗。
看個配置
上週研究專案打包時,根據網上一個說明將此選項勾選了,結果今天直接執行 SpringBoot 專案的 main 類時,竟然先執行了 maven install 命令。由於是一個我從來沒有 install 過 Vue 專案的工程的後端模組,平時很快就能啟動的專案,今天死活跑不起來。
異常顯示是自動打包 vue 專案的外掛執行失敗了,定位問題可能出在 maven install 操作上,為什麼會執行 maven build 呢,理論上只需要 compile 專案就可以了呀。
聯想到上週和本週 IDEA 的配置差異,去掉此勾選項後,不再執行 maven build 操作了,專案正常跑起來了。
後續
2020 年 8 月 18 日,又看了另一個模組,在取消勾選 “Delegate IDE build/run actions to maven” 配置後,它雖然是 SpringBoot 專案,但是沒法執行,編譯報錯還是 common 中的類檔案找不到。
對比了它的 pom.xml 和其他模組的,發現它配置了 maven 編譯操作:
此專案需要勾上Delegate IDE build/run actions to maven 配置,才能執行 main 方法。去掉這段 build 配置,取消勾選,還是無法執行主類。這是為何呢?maven 專案的編譯外掛和 IDE 的關係是怎樣的?這是個可以繼續研究的話題。
啟示錄
我們的專案使用 SpringBoot 做後端,Vue 做前端, web 端專案會配置一個 exec-maven-plugin 外掛執行 npm install 命令,將 Vue 專案打包到 web 的 static 目錄下。但是這個 Vue 專案平時沒有執行過,依賴的前端模組都沒有安裝。
當 IDEA 的 build/run 動作被委託給 maven 後,就會由 maven 執行 pom.xml 中的打包配置,最終在執行 npm install VueProject 的時候,解決依賴失敗,導致 SpringBoot 的專案的主函式啟動失敗了。
總結
到此這篇關於Delegate IDE build/run actions to maven 配置會影響程式執行嗎?的文章就介紹到這了,更多相關Delegate IDE build/run actions to maven 配置內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!