java - mvn - Maven spring boot run debug con argumentos
run project spring boot (3)
El comportamiento y el cambio que observa se está produciendo porque comenzó a usar la opción jvmArguments
:
Argumentos de JVM que deberían estar asociados con el proceso bifurcado utilizado para ejecutar la aplicación. En la línea de comando, asegúrese de ajustar varios valores entre comillas.
De forma predeterminada, cuando se usa, el complemento Spring Boot Maven también se dividirá en su ejecución, como lo describe la opción de fork
:
Bandera para indicar si los procesos de ejecución deben ser bifurcados. Por defecto, el proceso de forking solo se utiliza si se especifican un agente o
jvmArguments
.
Por lo tanto, el uso de jvmArguments
también activó el modo de horquilla de la ejecución del complemento. Al bifurcar, en realidad no está recogiendo los otros argumentos -D
pasados desde la línea de comandos.
Solución : si desea utilizar los jvmArguments
, jvmArguments
todos los argumentos necesarios.
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"
Usualmente estoy ejecutando mi aplicación Spring Boot con comando:
mvn spring-boot:run -Drun.arguments=--server.port=9090 /
-Dpath.to.config.dir=/var/data/my/config/dir
Quiero configurar el puerto personalizado para la depuración, por lo que puedo conectarme desde eclipse. Cuando agrego argumentos del ejemplo 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"
funciona, pero otros argumentos como server.port
o path.to.config.dir
ya no se reconocen y obtengo una excepción como:
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"
Pregunta : ¿Cómo puedo correr con todos los argumentos?
El nombre del parámetro tiene que ser prefijado con spring-boot.
como en -Dspring-boot.run.jvmArgument
La documentación de Spring Boot me proporcionó la solución mientras ejecutaba Spring Boot 2.0.3
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
Observe que a partir de Spring-Boot 2.0 los nombres han cambiado. Para más detalles revisa:
https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/maven-plugin/run-mojo.html
- run.jvmArguments -> spring-boot.run.jvmArguments
- run.arguments -> spring-boot.run.arguments