Maven spring Boot run debug with arguments

dxxyhpgq  于 2023-08-02  发布在  Spring
关注(0)|答案(6)|浏览(108)

通常我使用命令运行Sping Boot 应用程序:

mvn spring-boot:run -Drun.arguments=--server.port=9090 \
   -Dpath.to.config.dir=/var/data/my/config/dir

字符串
我想设置自定义端口进行调试,这样我就可以从eclipse连接了。当我添加来自示例Spring Boot Maven Plugin的参数时

mvn spring-boot:run -Drun.arguments=--server.port=9090 \
   -Dpath.to.config.dir=/var/data/my/config/dir \
   -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8787"


它工作,但其他参数,如server.portpath.to.config.dir不再被识别,我得到异常如下:

org.springframework.beans.factory.BeanDefinitionStoreException: Failed
to parse configuration class [com.my.app.Controller]; nested exception
is java.lang.IllegalArgumentException: Could not resolve placeholder
'path.to.config.dir' in string value
file:///${path.to.config.dir}/some.properties"

问题:我如何运行所有参数?

vatpfxk5

vatpfxk51#

参数名称必须以spring-boot.作为前缀,如-Dspring-boot.run.jvmArgument中所示
调试应用程序部分中的 *Sping Boot 参考文档 * 为我提供了运行Spring Boot 2.0.3的解决方案

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

字符串

ohfgkhjo

ohfgkhjo2#

您注意到的行为和更改正在发生,因为您开始使用jvmArguments选项:
应该与用于运行应用程序的分叉进程关联的JVM参数。在命令行中,确保将多个值括在引号之间。
默认情况下,在使用它时,Sping Boot Maven插件也将fork其执行,如fork选项所述:
指示是否应派生运行进程的标志。默认情况下,仅当指定了代理或jvmArguments时才使用进程分叉。
因此,jvmArguments的使用也激活了插件执行的fork模式。通过fork,您实际上并没有获得从命令行传递的其他-D参数。

解决方案:如果你想使用jvmArguments,那么把所有需要的参数传递给它。

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8787 -Dserver.port=9090 -Dpath.to.config.dir=/var/data/my/config/dir"

字符串

--编辑22/09/2020也检查来自@Stephane的其他答案以完成此答案(参数的前缀)

rbl8hiat

rbl8hiat3#

请注意,从Spring Boot2.0.2起,名称已更改。更多详情请查看:

因此:

*运行.jvmArguments-> spring-boot.run.jvmArguments
*run.arguments-> spring-boot.run.arguments

jckbn6z7

jckbn6z74#

关注redhat documentation ..

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=$PORT_NUMBER"

字符串

8e2ybdfx

8e2ybdfx5#

使用PowerShell从Maven命令行覆盖spring-boot属性:

  • Sping Boot 2.4.4
  • Maven 3.6.3
  • Powershell Windows 10

这对我很有效:

mvn spring-boot:run  -D"spring-boot.run.jvmArguments"="-Dimport.dataset.list=importpb"

字符串

anauzrmj

anauzrmj6#

还有一个问题。如果pom.xml定义了jvmArguments,则忽略命令行参数

<plugin>
    <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <jvmArguments>-Xmx2048m -XX:NativeMemoryTracking=summary --enable-preview</jvmArguments>
        </configuration>
</plugin>

字符串
如果我想将调试属性添加到启动器之一
第一个月
不会成功的。

相关问题