場景:一般服務器(比如tomcat,jboss等)啓動以後,我們還需要進一步修改java代碼,或者是jsp代碼。一般來說,改完重啓以後纔會生效。但如果配置了服務器的熱部署,就可以改完代碼後立即生效,而不是重啓服務器再生效。這樣就會節省大量時間!
目前有兩個選項:
On Update action : 顧名思義,當代碼改變的時候,需要IDEA爲你做什麼;
On Frame deactivation : 當失去焦點(比如你最小化了IDEA窗口),需要IDEA爲你做什麼。
---------------------------------------------------------------------------------------------------------------------------
下面以tomcat爲例,並且使用war exploded方式部署
具體配置如下:
1.打開tomcat的相關配置,右上角Edit Configurations ,找到tomcat的配置項
2.在配置項中找到On Update action與On Frame deactivation選項
On Update action 裏面有四個選項(一般選Update classes and resources):
-Update resources :如果發現有更新,而且更新的是資源文件(*.jsp,*.xml等,不包括java文件),就會立刻生效
-Update classes and resources : 如果發現有更新,這個是同時包含java文件和資源文件的,就會立刻生效
這裏需要注意一下:在運行模式下,修改java文件時不會立刻生效的;而debug模式下,修改java文件時可以立刻生效的。當然,兩種運行模式下,修改resources資源文件都是可以立刻生效的。
-Redploy : 重新部署,只是把原來的war刪掉,不重啓服務器
-Restart : 重啓服務器
On Frame deactivation:
-Do nothing : 不做任何事 (一般推薦這個,因爲失去焦點的機率太大)
-Update resources : 失去焦點後,修改的resources文件都會立刻生效
-Update classes and resources : 失去焦點後,修改的java ,resources文件都會立刻生效(與On update action中的Update classes and resources一樣,也是運行模式修改的java文件不會生效,debug模式修改的java文件會立刻生效)
---------------------------------------------------------------------------------------------------------------------------
另外,如果Artifact是war包形式的話,On Update action與On frame deactivation中的選項也是不一樣的:沒有Update resources和 Update classes and resources這種選項,取而代之的是Hot Swap Classes選項,本質的意思是一樣的。