IDEA两种热部署方式


IDEA两种热部署方式

我这里整理的 IDEA 热部署方式有两种,一是 IDEA 自带的,另一种是通过 JRebel 插件。其他方式如:使用 springloaded jar 包、 spring-boot-devtools 本文不做介绍

一、IDEA 自带的

修改服务配置,使得 IDEA 窗口失去焦点时,更新类和资源,具体步骤:

菜单Run -> EditConfiguration , 然后配置指定服务器下,server标签下on frame deactivation = Update classes and resource。 如下图tomcat server

IDEA两种热部署方式-打不死的小强

缺点:这种方式是基于 JVM 提供的热加载,仅支持方法块内代码修改,只有 debug 模式下,并且是在 idea 失去焦点时(也即电脑切换到其他界面)才会触发热加载,相对加载速度缓慢 。

二、使用 JRebel 插件

1、安装 JRebel 插件

在 IDEA 中一次点击 File->Settings->Plugins->Brows Repositories ;在搜索框中输入 JRebel 进行搜索 ,找到 JRebel for intellij ;install;安装好之后需要重启 IDEA 。如下图所示

IDEA两种热部署方式-打不死的小强

如果安装失败,提示 …was not installed: Cannot download …,则进行下面设置:
找到 settings-> Appearance&Behavior -> System settings->updates 下面的 Use secure Connetion 去掉√

IDEA两种热部署方式-打不死的小强


2、激活 JRebel

JRebel 并非免费的插件,需要激活之后才能使用。
(1)首先到 github 上去下载一个破解软件,根据自己电脑下载指定版本,这里下载 windows x64 版本。 下载地址

IDEA两种热部署方式-打不死的小强

(2)双击运行下载好的软件,如下图,运行成功

IDEA两种热部署方式-打不死的小强

(3)在 IDEA 中一次点击 File->Settings->JRebel 并找到激活界面( 因为我的已经激活了,点击 change liense 进入激活界面) 

(4)选择 JRebel activated 中的 Team URL
第一行输入 http://127.0.0.1:8888/d3545f42-7b88-4a77-a2da-5242c46d4bc2
第二行输入正确的邮箱格式(随意填写),例如: test@123.com
勾选 I agree with… ,点击按钮验证激活
提示:d3545f42-7b88-4a77-a2da-5242c46d4bc2为 UUID,可以自己生成,但是必须是 UUID

IDEA两种热部署方式-打不死的小强

(4)最后把 JRebel 设置为 offline 模式 点一下work offline

IDEA两种热部署方式-打不死的小强

说明:激活成功后就可以把激活软件关闭了。

3、配置 IDEA

JRbel 是基于类加载机制来实现热加载的,因此你修改完成代码后必须重新编译当前代码,才能触发热部署,Eclipse 默认就支持了自动编译,而在 Intellij IDEA 中默认是关闭了自动编译的,可以按照如下 2 步设置开启:

(1)IDEA 开启项目自动编译,File->Settings->Build,Execut, Deployment -> Compiler 勾选中左侧的Build Project automatically

IDEA两种热部署方式-打不死的小强

(2)IDEA 开启项目运行时自动 make, ctrl + shift + a搜索命令:registry -> 勾选compiler.automake.allow.when.app.running

IDEA两种热部署方式-打不死的小强
IDEA两种热部署方式-打不死的小强

4、配置 JRebel

选择要启用 JRebel 热部署的 module,打开 View – Tool Windows – JRebel

IDEA两种热部署方式-打不死的小强

弹出 JRebel Panel,根据需要选择 module

IDEA两种热部署方式-打不死的小强

5、JRebel 热部署说明

(1)启动项目要采用 Run with JRebel、Debug with JRebel。

IDEA两种热部署方式-打不死的小强

(2)JRebel 热部署触发

1)JRebel 默认修改完代码,到了检测时间自动重新编译完成热部署。检测时间可以通过下面设置

IDEA两种热部署方式-打不死的小强

2)如果不想自动完成,可以通过取消 Enable IntelliJ automatic compilation 勾选√,如下图

IDEA两种热部署方式-打不死的小强

这样在修改代码后,需要通过 Ctrl + F9 (或菜单 Built->Build Project),才会触发。

三、JRebel 使用中遇到的问题

1、不能热加载

问题:在使用中发现,代码明明更改了,包括增加了新的代码文件。但是无论手动触发、自动触发还是重启 tomcat。项目都不更新热加载。

分析:后来在一次启动 tomcat 的时候突然发现,启动日志中显示的 JRebel 热加载监控路径不是当前项目的路径;

IDEA两种热部署方式-打不死的小强

接着想到,我这个项目是通过原来项目复制出来的,而该路径是原来项目的本地路径。于是明白之所有热部署不生效是因为 JRebel 监控是原来项目而不是当前项目。

解决:搞清楚了原因,接下来,只需将 JRebel 所监控项目改为当前项目即可。

File -> Project Structure… -> Modules -> JRebel -> Regenerate xml confguration 即可,如下图:

IDEA两种热部署方式-打不死的小强

JRebel 方式重启 tomcat 即可。



2 thoughts on “IDEA两种热部署方式

发表评论

邮箱地址不会被公开。 必填项已用*标注