【发布时间】: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
我使用以下命令从我的终端运行我的 maven 项目以获取开发配置文件
sudo mvn spring-boot:run -Dspring.profiles.active=dev
如何使用给定的配置文件运行我的项目以在调试模式下运行。如何在 intellij 中为此设置配置?
【问题讨论】:
标签: spring spring-boot maven intellij-idea jetbrains-ide
使用特定配置文件从 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...”。
来源:
【讨论】:
如果您是从 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 应用程序中一样。
【讨论】: