2016-03-25 46 views
10

Di solito sto correndo la mia domanda di avvio della sorgente con il comando:Maven avvio di primavera di debug corsa con argomenti

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

voglio impostare porta personalizzata per eseguire il debug, in modo da poter collegare da Eclipse. Quando aggiungo argomenti da esempio 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" 

funziona, ma gli altri argomenti, come server.port o path.to.config.dir non sono più riconosciuti e ottengo eccezione come:

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" 

Domanda: Come posso eseguire con tutta argomenti?

+0

soluzione esatta nel mio caso è stato quello di chiamare: 'mvn primavera-boot: eseguire -Drun.jvmArguments =" - Xdebug -Xrunjdwp: trasporti = dt_socket, server = y, indirizzo = 8787 -Dserver.port = 9090 -Dpath.to.config.dir =/var/data/my/config/dir "' – wbk

+0

Link non funzionante ... – powder366

risposta

16

Il comportamento e il cambiamento si nota sta accadendo perché hai iniziato con l'opzione jvmArguments:

argomenti JVM che dovrebbero essere associati con il processo biforcuta utilizzato per eseguire l'applicazione. Sulla riga di comando, assicurati di racchiudere più valori tra virgolette.

Per default, quando viene utilizzato, il plug Spring avvio Maven inoltre forcella sua esecuzione, come descritto dall'opzione fork:

Contrassegnare per indicare se i processi di esecuzione dovrebbero essere biforcuta. Per impostazione predefinita, il processo di forking viene utilizzato solo se viene specificato un agente o jvmArguments.

Quindi, l'utilizzo di jvmArgumentgs attivava anche la modalità a forcella dell'esecuzione del plug-in. Con il biforcarsi, in realtà non stai raccogliendo gli altri argomenti passati dalla riga di comando.

Soluzione: se si desidera utilizzare jvmArgumentgs, passare tutti gli argomenti richiesti.

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

Nota: funzionava, ma ho trovato l'opzione -Drun.profiles (e immagino altre opzioni che iniziano con 'run') devono essere mantenute * al di fuori * del bit jvmArguments. es: mvn spring-boot: run -Drun.jvmArguments = "- Xdebug -Dspring.foo = bar" -Drun.profiles = test – Ryan

+0

Puoi indirizzarmi a un documento di approfondimento su come funziona questa roba? – powder366

+0

@ powder366 hai già provato con la documentazione ufficiale, già indicata dalla risposta sopra? Vi sono esempi e descrizioni di obiettivi/opzioni. Ti riferisci a documenti specifici di Spring Boot oa documenti generici di livello Maven? –

Problemi correlati