Eclipse与IntelliJ热部署

Dar*_*arz 5 java eclipse tomcat intellij-idea

我的app配置:Tomcat 8,Spring,Spring MVC,Hibernate.

在Eclipse中,我创建了Tomcat Server,并将我的应用程序添加到资源中.JSP,JS,CSS和JAVA类热部署就像这样工作.

在IntelliJ中,我配置了Tomcat 8 Server.在部署选项卡中我添加了myapp:war exploded.我启用On 'update' actionUpdate classes and resources,也启用了On frame deactivation: Update classes and resources.JSP,JS,CSS热插拔就是这样的.Java类没有.

我也检查过了 Settings > Build, exection, deployment > Compiler > Make project automatically

PS.我知道我可以使用JRebel,但在Eclipse热部署中没有JRebel.为什么它在IntelliJ中不起作用?

Ant*_*pov 8

首先,该功能的名称不是"热部署",而是HotSwap.它是JVM的一个功能,而不是IDE的功能.IDE只是自动执行该过程,并在有可用的新版本时自动触发已更改类的HotSwap.HotSwap仅限于可以对现有方法的主体进行的更改.

在IntelliJ中,转到Settings-> Debugger-> HotSwap并检查设置:

HotSwap设置

在后台启用重新加载类复选框,然后您可以选择行为,如果IDE询问您有关热切换类,静默热交换或从不热切换类的行为.

你必须手动编译.但是,如果应用程序是从"工件"部署的,那么"自动创建项目"适用于正在运行的应用程序,即使它表示相反(设置 - >编译器).但不便之处在于自动编译会延迟触发,因此它并不像人们期望的那样瞬间完成.手动编译就像在Eclipse中按CTRL+ 一样简单S,只需CTRL+ F9/ CMD+ F9来制作项目(实际上是增量)或CTRL+ SHIFT+ F9/ CMD+ SHIFT+ F9如果你想编译单个文件.

我仍然建议JRebel改进体验,因为它远远超出HotSwap的功能,并且它与大量的Java框架集成以消除重新部署.是的,我有偏见 - 我为ZeroTurnaround工作,我参与了JRebel开发.

更新:

最初的问题更多是关于在Tomcat/IntelliJ In Run配置中自动重新部署Web应用程序,您可以配置"更新"操作应该做什么:

更新动作

手动调用"更新"操作.CTRL+ SHIFT+ A/ CMD+ SHIFT+ A,并搜索"更新":

在此输入图像描述

因此,重新部署是IntelliJ中相当"一键"的手动过程.