2016-03-25 7 views
10

Normalerweise meinen Frühling Boot-Anwendung mit dem Befehl Ich renne:Maven Frühjahr Boot laufen Debug mit Argumenten

mvn spring-boot:run -Drun.arguments=--server.port=9090 \ 
    -Dpath.to.config.dir=/var/data/my/config/dir 

Ich mag benutzerdefiniert Port zu debuggen setzen, so kann ich von Eclipse verbinden. Wenn ich Argumente aus Beispiel hinzufügen 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" 

es wie server.port oder path.to.config.dir aber auch andere Argumente funktioniert nicht mehr erkannt und ich Ausnahme wie:

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" 

Frage: Wie kann ich mit allen laufen kann Argumente?

+0

Exakte Lösung in meinem Fall zu nennen war: 'mvn feder boot: laufen -Drun.jvmArguments =" - Xdebug -Xrunjdwp: transport = dt_socket, server = y, address = 8787 -Dserver.port = 9090 -Dpath.to.config.dir =/var/data/mein/config/dir "' – wbk

+0

Link funktioniert nicht ... – powder366

Antwort

16

Das Verhalten und die Änderung, die Sie bemerken, geschieht, weil Sie mit der jvmArguments Option gestartet:

JVM Argumente, die verwendet wurden mit dem gegabelten Prozess verbunden werden soll, die Anwendung auszuführen. Stellen Sie auf der Befehlszeile sicher, dass mehrere Werte zwischen Anführungszeichen eingeschlossen werden.

standardmäßig wenn Sie es, das Frühlings Boot-Maven Plugin wird auch seine Ausführung Gabel, wie sie in der fork Option beschrieben:

Flag, um anzuzeigen, wenn die Laufpunkte gegabelt werden sollte. Standardmäßig wird Forking Forking nur verwendet, wenn ein Agent oder jvmArguments angegeben ist.

Daher hat die Verwendung von jvmArgumentgs auch den Fork-Modus der Plugin-Ausführung aktiviert. Durch Gabelung holen Sie die anderen -D Argumente, die von der Befehlszeile übergeben werden, nicht ab.

Lösung: Wenn Sie die jvmArgumentgs verwenden möchten, dann übergeben Sie alle erforderlichen Argumente dazu.

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" 
+0

Hinweis: Dies funktionierte, aber ich fand, dass die Option -Drun.profiles (und ich würde raten andere Optionen, die mit "run" beginnen, müssen * außerhalb des jvmArguments-Bits bleiben. zB: mvn spring-boot: run -Drun.jvmArguments = "- Xdebug -Despring.foo = bar" -Drun.profiles = test – Ryan

+0

Kannst du mich auf ein ausführliches Dokument verweisen, wie das funktioniert? – powder366

+0

@ powder366 hast du es schon mit der offiziellen dokumentation versucht, auf die du oben schon hingewiesen hast? Es gibt Beispiele und Beschreibungen von Zielen/Optionen. Beziehen Sie sich auf Spring Boot-spezifische Dokumente oder auf allgemeinere Maven-Level-Dokumente? –