maven项目 springboot 热部署详细教程

热部署过程方式主要分为两种:

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

热部署调试:

以上主要是介绍了热部署过程,但是实现热部署的调试还需要进一步配置:

  1. 首先在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才能生效!

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值