SpringBoot工程+热部署进行远程调试

SpringBoot工程+热部署进行远程调试

本地端添加配置

在pom.xml文件添加配置:

    <plugin>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-maven-pluginartifactId>
         <configuration>
            <jvmArguments>
            -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=XXXX
            jvmArguments>
            <fork>truefork>
         configuration>
    plugin>

-Xdebug
启用调试特性
-Xrunjdwp
启用JDWP实现,它包含若干子选项:
transport=dt_socket
JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。
address=XXXX
JVM在默认在8000端口上监听请求,是指服务器上的。
server=y
y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。
suspend=y
y表示启动的JVM会暂停等待,直到调试器连接上。
suspend=y这个选项很重要。如果你想从Tomcat启动的一开始就进行调试,那么就必须设置suspend=y。

jar 命令开启远程调试

博主用的是XShell启动jar包,例如 原先在XShell上启动jar的命令是:java -jar XXX.jar,现在需要修改为:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=XXXX -jar XXX.jar
如果出现Connection refused,则需要检查端口的使用情况,检测是否被占用以及能否被外部访问

ecplise连接远程端口进行调试

右键工程->debug as->debug configurations,可以看到如下图
SpringBoot工程+热部署进行远程调试_第1张图片

第一次运行,需要先把jar包上传至服务器。后续就不用了

如图所示点击Debug即可开始远程调试

热部署

考虑到代码是经常修改的,代码每次都要上传,这样很麻烦。Spring有个插件spring-boot-devtools进行热部署,使更改代码无须手动重启工程。spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的应用上。
在pom.xml文件添加如下依赖:

<dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-devtoolsartifactId>
        <optional>trueoptional>
    dependency>

此外需要在这时候添加的spring-boot-maven-plugin:

    <plugin>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-maven-pluginartifactId>
         <configuration>
            <fork>truefork>
         configuration>
    plugin>

通过配置以上信息,我们在可以看到工程右边有个devtools的标志,表示已成功配置。
这里写图片描述

以上就完成全部操作了。

常见问题:

在eclipse中,若没有设置Build Automatically,修改代码后,应用不会同步最新的代码,则需要对工程进行build操作

你可能感兴趣的:(SpringBoot工程+热部署进行远程调试)