【问题标题】:How to debug spring boot maven project in debug mode in Intellij?如何在 Intellij 中以调试模式调试 spring boot maven 项目?
【发布时间】:2020-12-31 07:52:18
【问题描述】:

我使用以下命令从我的终端运行我的 maven 项目以获取开发配置文件

 sudo mvn spring-boot:run -Dspring.profiles.active=dev

如何使用给定的配置文件运行我的项目以在调试模式下运行。如何在 intellij 中为此设置配置?

【问题讨论】:

    标签: spring spring-boot maven intellij-idea jetbrains-ide


    【解决方案1】:

    使用特定配置文件从 Maven 运行 Spring Boot 项目

    mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
    

    或者使用shell变量

    SPRING_PROFILES_ACTIVE=foo mvn spring-boot:run
    

    或者通过向 JVM 传递参数

    mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=foo,bar"
    

    这些是我所知道的唯一适用于 Spring Boot v2.0+ 的方法。
    第一个选项被 Spring Boot Maven 插件识别并将其传递给应用程序 JVM。
    从 Spring Boot 2.0 版本开始,run 目标默认分叉进程。由于插件不能直接识别-Dspring.profiles.active,所以它只被Maven进程看到,不会传递给应用程序本身。这就是为什么它不能以 mvn spring-boot:run -Dspring.profiles.active=foo,bar 的形式工作。
    在第二个选项中,shell 变量应该对从该 shell 产生的任何子进程可见。

    从 Maven 以调试模式启动 Spring Boot 项目

    mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
    

    把它放在一起

    mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
    

    替代方案,将所有参数传递给 JVM

    mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -Dspring.profiles.active=foo,bar"
    

    Maven pom.xml 应该包含 Spring Boot 插件

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.0.1.RELEASE</version>
    </plugin>
    

    在 IntelliJ 中,您应该从“运行/调试配置”工具窗口创建一个新的“远程”调试配置。您可以在主菜单中找到它 - “运行/编辑配置...”
    默认配置将使用相同的5005 端口。 之后,启动该调试配置。控制台应显示“已连接到目标 VM...”。

    来源:

    【讨论】:

      【解决方案2】:

      如果您是从 maven 运行,则添加以下参数:

       mvn spring-boot:run -Dspring.profiles.active=dev -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5555"
      

      这里的 5555 是调试端口号(您可以使用任何其他未占用的端口)。

      然后在 IntelliJ 中,您可以使用远程调试配置并连接到该端口。

      如果您从 intelliJ 打开 pom.xml,您可以使用 --spring.profiles.active=dev 和 main 类创建一个运行配置,该类是一个具有 main 方法的类,就像在常规最简单的 java 应用程序中一样。

      【讨论】:

      • -Drun.jvmArguments 似乎不适用于此插件,“-Dspring-boot.run.jvmArguments=" 可以。
      【解决方案3】:

      只需点击运行按钮(绿色可试用按钮)然后点击调试...

      IntelliJ 将以调试模式运行您的 spring-boot 应用

      如果您想使用参数运行,只需打开编辑配置并将您的参数放入 VM 选项/程序参数中,例如

      【讨论】:

      • 从 Spring Boot 2.2 开始添加 -Dspring-boot.run.profiles= 也可以指定配置文件
      猜你喜欢
      • 2018-03-05
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      • 2021-08-27
      • 2011-04-16
      • 2020-08-04
      • 2015-03-20
      • 2020-03-04
      相关资源
      最近更新 更多