IDEA中Maven專案修改JSP後透過配置Tomcat實現立即生效

刘一二發表於2024-04-14

參考:
IDEA中Facets和Artifacts配置說明
idea中artifacts、facets、modules
IntelliJ IDEA 部署 Web 專案,終於搞懂了

傳統SpringMvc專案目錄和對應tomcat配置如下:

在日常開發過程中,我們修改完java程式碼後,接著就點選 Build 編譯,然後就可以去驗證程式碼了(前提是 On 'Update' Action 選擇了 Update classes and resources)

但是修改JSP的時候遇到一個問題:每次修改完JSP檔案後,都必須重啟tomcat才能使應用的頁面生效。僅僅點選Build(Build Project)是不能使JSP頁面生效的。

如果要使JSP頁面或者說是 webapp 目錄下的修改生效,就需要點選 Build 下的 Build Artifact。其實這步操作就是 Tomcat配置 Before launch 中的 Build 'favor-bill:war exploded' artifact,即重新構建war包,將classes和resources、webapp目錄複製到 target 目錄中。

還用另外一種方法將 Build Artifact 和 Build 合二為一。即在 Project Setting 的 Artifacts 勾選 Include in project build,意為在 Build 的時候構建artifact。

注:IDEA中web應用的配置都在 Project Structure。

還有一個問題,百思不得其解。當啟動tomcat後,在 target 和 target/favor-bill-1.0-SNAPSHOT/WEB-INF 下各有1個classes資料夾。而當點選Build後,只會將修改的java檔案重新編譯到 target/classes 資料夾下,WEB-INF/classes裡的class檔案沒變。這個時候修改的程式碼在web應用裡竟然生效了。
那麼IDEA中啟動tomcat應用時,生效的是 target/classes 還是 target/favor-bill-1.0-SNAPSHOT/WEB-INF/classes呢???

相關文章