Eclipse与IntelliJ热部署

我的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中不起作用?

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

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

HotSwap设置

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

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

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

更新:

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

更新动作

手动调用“更新”操作。 CTRL + SHIFT + A / CMD + SHIFT + A ,搜索“更新”:

在此处输入图像描述

因此,重新部署是IntelliJ中相当“一键”的手动过程。

在IJ中,您可以设置eclipse编译器而不是默认的javac编译器,但仍需要手动创建。

您是否注意到“自动生成项目”旁边的IJ中的注释?

仅在未运行/调试时有效

要重新部署,只需执行Ctrl + F9 (制作)或Ctrl + Shift + F9 (制作当前文件)。