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.port
或path.to.config.dir
不再被识别,并且我得到如下异常:
org.springframework.beans.factory.BeanDefinitionStoreException: Failedto 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