Maven Spring Boot运行带有参数的调试

通常,我使用以下命令运行Spring Boot" title="Spring Boot">Spring Boot应用程序:

mvn spring-boot:run -Drun.arguments=--server.port=9090 \

-Dpath.to.config.dir=/var/data/my/config/dir

我想设置自定义端口进行调试,以便可以从Eclipse连接。当我从示例http://docs.spring.io/spring-

boot/docs/1.1.2.BUILD-SNAPSHOT/maven-plugin/examples/run-

debug.html添加参数时

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"

:如何处理所有参数?

回答:

由于您开始使用以下jvmArguments选项,因此您注意到的行为和更改正在发生:

应该与用于运行应用程序的分叉进程相关联的JVM参数。在命令行上,确保在引号之间包含多个值。

默认情况下,当使用它时,Spring Boot Maven插件还将分叉其执行,如fork选项所述:

指示是否应分叉运行进程的标志。默认情况下,仅jvmArguments在指定代理或的情况下才使用过程分叉。

因此,的使用jvmArguments也激活了插件执行的派生模式。通过分叉,您实际上并没有选择-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"

以上是 Maven Spring Boot运行带有参数的调试 的全部内容, 来源链接: utcz.com/qa/426818.html

回到顶部