2016-03-25 40 views
10

Zwykle używam mojej aplikacji Boot wiosnę z poleceniem:Maven bagażnika sprężyna run debugowania z argumentami

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

Chcę ustawić niestandardowego portu do debugowania, więc mogę połączyć z zaćmienia. Kiedy dodać argumenty z przykładu 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" 

to działa, ale innych argumentów jak server.port lub path.to.config.dir nie są rozpoznawane i otrzymuję wyjątek jak:

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" 

Pytanie: Jak mogę uruchomić ze wszystkimi argumenty?

+0

Dokładne rozwiązanie w moim przypadku było zadzwonić: 'mvn wiosna-boot: uruchom -Drun.jvmArguments =" - Xdebug -Xrunjdwp: Transport = dt_socket, server = y, address = 8787 = 9090 -Dserver.port -Dpath.to.config.dir =/var/data/my/config/dir "' – wbk

+0

Link nie działa ... – powder366

Odpowiedz

16

Zachowanie i zmiany można zauważyć, dzieje się dlatego, że zaczął używać opcji jvmArguments:

argumenty JVM, które powinny być związane z rozwidloną procesu stosowanego do uruchomienia aplikacji. W wierszu poleceń zapakuj wiele wartości między cudzysłowami.

Domyślnie podczas korzystania z niego, wtyczka Wiosna Boot Maven również widelec jego wykonania, jak opisano w opcji fork:

Flaga wskazująca, czy procesy przebiegają należy rozwidlony. Domyślnie rozwidlenie procesu jest używane tylko wtedy, gdy określony jest agent lub jvmArguments.

Z tego powodu użycie trybu jvmArgumentgs również aktywowało tryb rozwidlenia wykonania wtyczki. Rozwidlając, w rzeczywistości nie przechwytujesz pozostałych argumentów przekazanych z wiersza poleceń.

Rozwiązanie: jeśli chcesz użyć jvmArgumentgs, przekaż wszystkie wymagane argumenty.

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

Uwaga: To zadziałało, ale znalazłem opcję -Drun.profiles (i zgaduję inne opcje zaczynające się od "run") muszą być przechowywane * poza * bitem jvmArguments. np: mvn spring-boot: run -Drun.jvmArguments = "- Xdebug -Dspring.foo = bar" -Drun.profiles = test – Ryan

+0

Czy możesz skierować mnie do obszernego dokumentu, jak to działa? – powder366

+0

@ powder366 czy już próbowałeś z oficjalną dokumentacją, już wskazaną przez powyższą odpowiedź? Istnieją przykłady i opis celów/opcji. Czy odwołujesz się do dokumentów Spring Boot lub do bardziej ogólnych dokumentów na poziomie Maven? –