热部署过程方式主要分为两种:
1. 通过 spring-boot-devtools
(1)首先在工程项目中添加spring-boot-devtools依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
(2)在pom.xml文件末尾添加如下配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
(3)启动项目时通过mvn工具启动:mvn spring-boot:run,不可以直接运行main类来启动项目。
注:这里就不得不讲一下maven工具的配置过程(这里以mac os 系统为例):
- 首先通过下载地址下载maven工具包:https://maven.apache.org/download.cgi,我下载的是zip压缩包工具
- 将压缩包解压至/usr/local/路径下
- 编写~/.bash_profile文件,添加如下代码(注意修改路径为自己的文件路径所在地址),保存后执行命令:
source ~/.bash_profile
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
export JAVA_HOME
M2_HOME=/usr/local/apache-maven-3.5.3
export M2_HOME
PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
export PATH
- 执行命令 mvn -v 查看是否配置mven成功
(4)安装成功maven后:通过终端切换至项目根目录,执行命令:mvn spring-boot:run
当然也可以直接在IEDA中使用命令如图所示:
2. 通过springloaded实现热部署
(1)通过如下配置添加springloaded依赖
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
<!--<version>1.5.9.RELEASE</version>-->
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<classifier>exec</classifier>
</configuration>
<!--<configuration>-->
<!--<fork>true</fork>-->
<!--<addResources>true</addResources>-->
<!--</configuration>-->
</plugin>
(2)如果使用thymeleaf模板,一定要注意在application.properties中添加
spring.thymeleaf.cache = false(3)通过mvn spring-boot:run运行程序
注意事项:如果如上方法仍然不成功,可尝试如下几种方法尝试修改
- 如果使用了thymeleaf,配置文件application中添加如下代码禁用模板的缓存功能
spring.thymeleaf.cache = false
- ctrl+shift+a 输入Register, 勾选 compiler.automake.allow.when.app.running 选项
- 打开intellij配置项,找到Compiler下,选中Build project automatically
热部署调试:
以上主要是介绍了热部署过程,但是实现热部署的调试还需要进一步配置:
- 首先在pom文件中添加配置信息
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005,
2. mvn启动命令变为:
spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
3. 点击Run->editConfigurations新建Remote:
4. 启动项目时,先通过mvn命令启动项目,然后启动remote调试模式:一般前端页面修改保存后可以直接刷新,后台代码修改后,Ctrl+F9,重新Make代码生效!
JRebel插件实现热部署:
该插件可以很好支持热部署实现,唯一比较鸡肋的地方是插件并不是免费的,需要激活或者下载,本例子中使用的插件版本为7.1.17:
1.通过菜单settings->Plugins下载插件,如果下载不下来可能需要翻墙,或者下载离线自己安装,这里不多介绍离线安装方式。
2. 激活:
网上大多数方式介绍的是通过facebook或者twitter账号登录,获得免费激活码进行激活,但是开始尝试这种方式,不知道怎么回事刚刚申请的facebook账号的邮箱功能就被禁用了,很无语!
这里我主要较少我自己实现的一种通过license server实现激活的方式:
1. 首先下载封装好的jar包,这里我也是在网上大神那里下载的,下载地址如下:
链接:https://pan.baidu.com/s/1fnUrLZs90J24Pvn7x2UBag 密码:aazs
2. 将该jar包部署到服务器上,通过java命令24小时运行该jar包:如下:
java -jar JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar -p 1008 &
3. 激活JRebel, 在license server添加内容
license server:http://{ip}:1008/{用户名}
邮箱随便填写,到此激活结束
4. 使用JRebel:
通过JRebel实现热部署时,无论是修改html前端还是后台代码,都需要Ctrl+F9重新make才能生效!