IDEA熱部署(一)---解析關鍵配置。
本編部落格轉載自:因為自己在研究熱部署,包括熱部署那些檔案,部署實現的包括那些操作。這一塊,所以這篇好部落格。
一、war和exploed區別
On Upate Action 與 On Frame Deactivation 這兩個選項的設定,依賴於 專案的部署方式 是war包 還是 exploded ,看下面的gif:
這裡實在是太靈活了,如果要講 太費時間了,我們只講exploded模式下的設定,因為這個我們用的最多,開發模式,開發完成後 直接用maven的 package命令打包就行了,所以用的最多的 也是最靈活的就是exploded 開發模式。exploded模式 實際執行的就是target目錄下的kao資料夾。
二、on update action
首先來看 on update action 相關的解釋,從字面上理解 就是 手工觸發 update 動作的時候 做什麼:
update resources ---- 更新靜態的資源,比如html,js,css等 執行模式和除錯模式都是立即生效。
update classes and resources ---- 更新java,jsp和靜態資源(
1. java 修改後,會被編譯成.class 然後覆蓋到target/kao資料夾下,IDE除錯模式的情況下,立即生效。IDE執行模式下,不立即生效,需要redeployed才可生效。
2. jsp修改後,再次被訪問的時候,會自動更新,重新編譯成.java---->.class 儲存在tomcat的work目錄下。由於是訪問時才檢測是否修改,是否需要重新編譯,所以 IDE 執行模式 和 IDE除錯模式下,都是立即生效。重新整理下頁面就可);
redeployed ----- 重新部署,釋出到tomcat裡,不重啟tomcat,而是把原來的刪掉,然後重新發布;
restart server ----- 重啟tomcat
------------------------------------------------------------------------------------------------------------------------
三、on frame deactivation
再來看on frame deactivation ,意思是 IDE 失活時 做什麼,就是說 IDE 失去焦點時 做什麼。
Do nothing --------- 什麼都不做
update resources ---- 更新靜態的資源,比如html,js,css等 執行模式和除錯模式都是立即生效。
update classes and resources ---- 更新java,jsp和靜態資源 同上。
驗證上方的結論看如下GIF:
靜態資源不用測試了,測試 On Update Action 的 (update classes and resources)在debug模式 與 執行模式下的差別。
1.執行模式下,jsp是 update classes and resources 是立即生效的,但是.java檔案修改後 並不會立即生效。
2.debug除錯模式下,jsp和java檔案修改 都會立即生效:
3.測試on frame deactivation 即IDE 失去焦點時自動做一些事, 我們測試 讓其update classes and resources ,以除錯模式為例,執行模式除了java 修改不會自動生效,其它一致;
四、總結:
總結,這樣設定是最佳的選擇:
因為On frame deactivation IDE失去焦點的情況下 自動觸發,而開發過程中 可能需要查詢資料 或 與人聊天 或幹其它事,IDE需要不停的失去焦點。每次失去焦點就自動觸發 update ,CPU一下子 費很多,電腦瞬間變慢,所以沒有必要這樣,設定為Do nothing 最好,官方也預設的是 Do nothing。
On Update action ------- update classes and resources ----- 執行模式下(jsp 立即生效,java 需要redeploy才可生效)
On Update action ------- update classes and resources ----- 除錯模式下(java、jsp 都立即生效)
=================完結了!!!!!!!!這塊非常靈活,這篇部落格研究了一天 才寫出來,很多時候 不知道 如何組織 如何寫,才能更加 簡單明瞭。
五、關於一些小知識說明:
C:\Users\del-berlin\.IntelliJIdea2017.1\system\tomcat\Unnamed_kao_4\work\Catalina\localhost\kao\org\apache\jsp ,jsp再第一次被訪問時,會被編譯成java 然後再被編譯成class ,然後放到 tomcat的work目錄下,但是IntelliJ 裡,由於部署方式的原因 實際上是儲存到了 上面的目錄裡,而實際的專案執行中是儲存到了tomcat的work目錄裡:
因為自己在idea和jetty熱部署的時候, 使用jetty外掛和使用jetty伺服器,出現了一些不同的效果(後面敘述),所以很幸運的收索到了這篇部落格。所以推薦給大家。