1. 程式人生 > >SpringBoot工程+熱部署進行遠程調試

SpringBoot工程+熱部署進行遠程調試

完成 pom src tar div 被占用 true 套接字 ima

本文轉載自:https://blog.csdn.net/qq_31868349/article/details/78553901

SpringBoot工程+熱部署進行遠程調試

本地端添加配置

在pom.xml文件添加配置:

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
         <configuration>
            <
jvmArguments> -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=XXXX </jvmArguments> <fork>true</fork> </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,可以看到如下圖

技術分享圖片

第一次運行,需要先把jar包上傳至服務器。後續就不用了

如圖所示點擊Debug即可開始遠程調試

熱部署

考慮到代碼是經常修改的,代碼每次都要上傳,這樣很麻煩。Spring有個插件spring-boot-devtools進行熱部署,使更改代碼無須手動重啟工程。spring-boot-devtools 是一個為開發者服務的一個模塊,其中最重要的功能就是自動應用代碼更改到最新的應用上。
在pom.xml文件添加如下依賴:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional><!-- optional=true,依賴不會傳遞,該項目依賴devtools;之後依賴myboot項目的項目如果想要使用devtools,需要重新引入 -->
    </dependency>

此外需要在這時候添加的spring-boot-maven-plugin:

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
         <configuration>
            <fork>true</fork><!-- fork: 如果沒有配置該項配置,devtools不會起作用的,即應用不會restear -->
         </configuration>
    </plugin>

通過配置以上信息,我們在可以看到工程右邊有個devtools的標誌,表示已成功配置。

技術分享圖片

以上就完成全部操作了。

常見問題:

在eclipse中,若沒有設置Build Automatically,修改代碼後,應用不會同步最新的代碼,則需要對工程進行build操作

SpringBoot工程+熱部署進行遠程調試