如何在 Intellij 中以调试模式调试 spring boot maven 项目?

Mr.*_*bot 6 spring jetbrains-ide intellij-idea maven spring-boot

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

 sudo mvn spring-boot:run -Dspring.profiles.active=dev
Run Code Online (Sandbox Code Playgroud)

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

ovi*_*iro 8

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

mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
Run Code Online (Sandbox Code Playgroud)

或者使用 shell 变量

SPRING_PROFILES_ACTIVE=foo mvn spring-boot:run
Run Code Online (Sandbox Code Playgroud)

或者通过将参数传递给 JVM

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=foo,bar"
Run Code Online (Sandbox Code Playgroud)

据我所知,这些是唯一适用于 Spring Boot v2.0+ 的方法。
第一个选项由 Spring Boot Maven 插件识别并将其传递到应用程序 JVM。
从 Spring Boot 2.0 版本开始,run目标默认分叉进程。由于-Dspring.profiles.active插件不能直接识别它,因此它只能被 Maven 进程看到,而不会传递给应用程序本身。这就是为什么它在 form 中不起作用的原因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"
Run Code Online (Sandbox Code Playgroud)

把它放在一起

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"
Run Code Online (Sandbox Code Playgroud)

另一种方法是将所有参数传递给 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"
Run Code Online (Sandbox Code Playgroud)

Mavenpom.xml应包含 Spring Boot 插件

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.0.1.RELEASE</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)

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

资料来源:


Mar*_*nik 3

如果您从 Maven 运行,请添加以下参数:

 mvn spring-boot:run -Dspring.profiles.active=dev -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5555"
Run Code Online (Sandbox Code Playgroud)

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

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

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