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?

17
demandé sur broc.seib 2016-03-25 13:12:27

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:

Indicateur

pour 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"
20
répondu A_Di-Matteo 2018-03-20 04:21:51

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
7
répondu jalogar 2018-06-04 09:55:36

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"
3
répondu Stephane 2018-07-25 07:59:46