我的应用程序配置:Tomcat 8,Spring,Spring MVC,Hibernate。
在Eclipse中,我创建了Tomcat Server,并将我的应用程序添加到资源中。 JSP,JS,CSS和JAVA类热部署就像这样。
在IntelliJ中,我配置了Tomcat 8 Server。在“部署”选项卡中,我添加了myapp:war exploded
。
我已将On 'update' action
启用为Update 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中不起作用?
答案 0 :(得分:8)
首先,该功能的名称不是"热部署"但HotSwap。它是JVM的一个功能,而不是IDE的功能。 IDE只会自动执行该过程,并在有可用的新版本时自动触发已更改类的HotSwap。 HotSwap仅限于可以对现有方法的主体进行的更改。
在IntelliJ中,转到Settings-> Debugger-> HotSwap并检查设置:
启用在后台重新加载类复选框,然后您可以选择行为,如果IDE询问您有关热切换类,静默热交换或永不热切换类的行为。
您必须手动编译。但是,如果应用程序是从"工件"部署的,那么"自动生成项目"适用于正在运行的应用程序,即使它说相反(设置 - >编译器)。但不便之处在于自动编译会延迟触发,因此它并不像人们期望的那样瞬间完成。手动编译就像在Eclipse中按 CTRL + S 一样简单,只需 CTRL + F9 / CMD + F9 来制作项目(实际上是增量)或 CTRL + SHIFT + F9 / CMD + SHIFT + F9 如果要编译单个文件。
我仍然建议JRebel改善体验,因为它远远beyond what HotSwap can do并且它与large number of Java frameworks集成以消除重新部署。是的,我有偏见 - 我为ZeroTurnaround工作,我参与了JRebel开发。
更新:
最初的问题更多的是关于在Tomcat / IntelliJ中自动重新部署Web应用程序 在运行配置中,您可以配置“更新”应该采取的措施。动作:
&#39;更新&#39;动作是手动调用的。 CTRL + SHIFT + A / CMD + SHIFT + A < / kbd>,并搜索&#39;更新&#39;:
因此,重新部署是一次“点击”#34; IntelliJ中的手动过程。
答案 1 :(得分:2)
在IJ中你可以设置eclipse编译器而不是默认的javac编译器,但你仍然需要手动编写。
答案 2 :(得分:-1)
您是否注意到“自动生成项目”旁边的IJ中的评论?
仅在未运行/调试时有效
要重新部署,只需执行 Ctrl + F9 (make)或 Ctrl + Shift + F9 (制作当前文件)。