我们在使用IDEA开发SpringBoot项目,在调试过程中,如果需要一些改动,比如添加一些Log信息或者修改某个变量的时候,普通情况下,我们需要重新打包然后再上传到服务器,再重新部署一下,非常麻烦,即便是一个小小的改动,整个流程都需要重新走一遍。好在IDEA和SpringBoot提供了远程调试和热部署的功能,我来简单介绍一下

    1. 编辑配置

    image.png

    1. 入相关界面,然后再点击图中的“+”号,选择“Remote”选项

    image.png

    1. 点击“Remote”后进入如下界面,相关选项的作用已经在图中标注了,设置完成点击“Apply”即可

    image.png

    1. 再次点击如下位置,就会出现debug项目的名称,我这里命名为demo

    image.png

    1. 在项目的pom.xml文件相应的位置添加如下代码,注意plugins中的代码,项目中可能已经存在,你只需要添加没有的部分即可 ```xml <?xml version=”1.0” encoding=”UTF-8”?> <project xmlns=”http://maven.apache.org/POM/4.0.0

      1. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

      1. <artifactId>demo-modules</artifactId>
      2. <groupId>com.concise.demo</groupId>
      3. <version>1.0.0</version>

      4.0.0 demo-javacpp 8 8

      1. <dependency>
      2. <groupId>org.bytedeco</groupId>
      3. <artifactId>javacpp</artifactId>
      4. <version>1.5.7</version>
      5. </dependency>
    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-devtools</artifactId>
    4. <!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
    5. <optional>true</optional>
    6. </dependency>
    7. <dependency>
    8. <groupId>com.concise</groupId>
    9. <artifactId>component-web</artifactId>
    10. </dependency>
    11. </dependencies>
    12. <build>
    13. <finalName>demo-javacpp</finalName>
    14. <plugins>
    15. <plugin>
    16. <groupId>org.apache.maven.plugins</groupId>
    17. <artifactId>maven-compiler-plugin</artifactId>
    18. <version>${maven-compiler-plugin.version}</version>
    19. <configuration>
    20. <encoding>utf-8</encoding>
    21. <source>${java.version}</source>
    22. <target>${java.version}</target>
    23. <annotationProcessorPaths>
    24. <!-- 引入 mapstruct-processor -->
    25. <path>
    26. <groupId>org.mapstruct</groupId>
    27. <artifactId>mapstruct-processor</artifactId>
    28. <version>${mapstruct.version}</version>
    29. </path>
    30. <!-- 引入 lombok-processor -->
    31. <path>
    32. <groupId>org.projectlombok</groupId>
    33. <artifactId>lombok</artifactId>
    34. <version>${lombok.version}</version>
    35. </path>
    36. </annotationProcessorPaths>
    37. </configuration>
    38. </plugin>
    39. <plugin>
    40. <groupId>org.springframework.boot</groupId>
    41. <artifactId>spring-boot-maven-plugin</artifactId>
    42. <version>${spring-boot.version}</version>
    43. <configuration>
    44. <!-- fork: 如果没有配置该项配置,devtools不会起作用的,即应用不会restear -->
    45. <fork>true</fork>
    46. <!-- 引入本地jar之后, 加入如下这行, maven才会打包进jar-->
    47. <includeSystemScope>true</includeSystemScope>
    48. <addResources>true</addResources>
    49. <mainClass>com.concise.demo.javacpp.JavacppApplication</mainClass>
    50. </configuration>
    51. <executions>
    52. <execution>
    53. <goals>
    54. <goal>repackage</goal>
    55. </goals>
    56. </execution>
    57. </executions>
    58. </plugin>
    59. </plugins>
    60. </build>

    1. 6. 此时对项目进行打包,将jar文件上传至服务器。第一次还是需要将jar包上传的
    2. 7. 在服务器执行如下代码 注意:
    3. 1. address改成自己的端口
    4. 1. jar名称改成自己的jar包名称
    5. ```bash
    6. java -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar demo-javacpp.jar

    成功后会有如下显示
    image.png

    1. 在IDEA中选择debug项目,点击debug按钮,项目就在服务器运行了

    image.png

    :::warning 每次改变项目中的代码,一定要记得build一下, 这样服务器端的jar会被热更新的 ::: image.png