Maven spring boot exécuter le déboguage avec les arguments
habituellement, j'exécute mon application de démarrage à ressort avec la commande:
mvn spring-boot:run -Drun.arguments=--server.port=9090
-Dpath.to.config.dir=/var/data/my/config/dir
je veux configurer le port personnalisé pour déboguer, donc je peux me connecter à partir d'eclipse. Quand j'ajoute des arguments de l'exemple 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"
ça marche mais d'autres arguments comme server.port
ou path.to.config.dir
ne sont plus reconnus et j'obtiens une exception comme:
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"
Question : comment je peux exécuter avec tous les arguments?
3 réponses
le comportement et le changement que vous remarquez se produisent parce que vous avez commencé à utiliser l'option jvmArguments
:
JVM arguments qui devraient être associés au procédé Fourché utilisé pour exécuter la demande. Sur la ligne de commande, assurez-vous d'envelopper plusieurs valeurs entre guillemets.
par défaut, lors de son utilisation, le plugin Maven de démarrage à ressort va également bifurquer son exécution, comme décrit par le fork
option:
Indicateurpour indiquer si les processus d'exécution doivent être bifurqués. Par défaut, process forking n'est utilisé que si un agent ou
jvmArguments
est spécifié.
ainsi, l'utilisation de jvmArguments
a également activé le mode fork de l'exécution du plugin. En bifurquant, vous ne captez pas les autres arguments -D
passés depuis la ligne de commande.
Solution : si vous souhaitez utiliser le jvmArguments
, puis passer tous les arguments requis.
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"
notez que les noms de spring-boot 2.0 ont changé. Pour plus de détails, voir:
https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/maven-plugin/run-mojo.html
- exécuter.jvmarguements - > tremplin.exécuter.jvmArguments
- exécuter.arguments - > spring-boot.exécuter.arguments
le nom du paramètre doit être précédé de spring-boot.
comme dans -Dspring-boot.run.jvmArgument
le documentation de Botte à ressort m'a fourni la solution pendant que j'exécute Spring Boot 2.0.3
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"