복붙노트

[SPRING] 인수로 Maven 봄 부팅 디버그를 실행합니다.

SPRING

인수로 Maven 봄 부팅 디버그를 실행합니다.

보통 Spring Boot 애플리케이션을 다음 명령으로 실행하고 있습니다.

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

디버깅 할 사용자 지정 포트를 설정하고 싶기 때문에 Eclipse에서 연결할 수 있습니다. 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"

그것은 작동하지만 server.port 또는 path.to.config.dir 같은 다른 인수는 더 이상 인식되지 않으므로 다음과 같은 예외가 발생합니다.

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"

질문 : 나는 모든 논점을 가지고 어떻게 달릴 수 있습니까?

해결법

  1. ==============================

    1.jvmArguments 옵션을 사용하기 시작했기 때문에 발생하는 동작과 변경 사항은 다음과 같습니다.

    jvmArguments 옵션을 사용하기 시작했기 때문에 발생하는 동작과 변경 사항은 다음과 같습니다.

    기본적으로, 이것을 사용할 때, Spring Boot Maven 플러그인은 fork 옵션에 의해 설명 된 것처럼 실행을 포크 할 것이다.

    따라서 jvmArguments를 사용하면 플러그인 실행의 포크 모드도 활성화됩니다. 포크 (fork)함으로써, 당신은 실제로 다른 것을 포착하지 않습니다. -D 인수는 명령 행에서 전달됩니다.

    해결책 : jvmArguments를 사용하려면 필요한 모든 인수를 전달하십시오.

    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"
    
  2. ==============================

    2.spring-boot 2.0의 이름이 바뀌 었음을 주목하십시오. 자세한 내용은 다음을 확인하십시오.

    spring-boot 2.0의 이름이 바뀌 었음을 주목하십시오. 자세한 내용은 다음을 확인하십시오.

    https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/maven-plugin/run-mojo.html

  3. ==============================

    3.매개 변수 이름 앞에는 spring-boot가 붙어야합니다. -Dspring-boot.run.jvmArgument와 같이

    매개 변수 이름 앞에는 spring-boot가 붙어야합니다. -Dspring-boot.run.jvmArgument와 같이

    스프링 부트 2.0.3을 실행하면서 스프링 부트 문서가 나에게 해결책을 제공했다.

    mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
    
  4. from https://stackoverflow.com/questions/36217949/maven-spring-boot-run-debug-with-arguments by cc-by-sa and MIT license