programing

Maven spring boot run 디버깅과 인수

procenter 2023. 3. 16. 23:53
반응형

Maven spring boot run 디버깅과 인수

보통 다음 명령을 사용하여 Spring Boot 응용 프로그램을 실행합니다.

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

커스텀 포토를 디버깅 하도록 설정하고, 이클립스로부터 접속할 수 있도록 합니다.예제 https://docs.spring.io/spring-boot/docs/1.1.2.RELEASE/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"

질문:어떻게 하면 모든 인수를 가지고 달릴 수 있을까요?

매개 변수 이름 앞에 다음을 붙여야 합니다.spring-boot.에서와 같이-Dspring-boot.run.jvmArgument

Spring Boot 매뉴얼을 통해 실행 시 해결 방법을 알 수 있습니다.Spring Boot 2.0.3

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

이 동작과 변경은 다음 옵션을 사용하기 시작했기 때문에 발생합니다.

응용 프로그램 실행에 사용되는 분기된 프로세스와 관련지어져야 하는 JVM 인수입니다.명령줄에서는 여러 값을 따옴표로 묶어야 합니다.

디폴트로는 Spring Boot Maven 플러그인 사용 시 옵션 설명에 따라 실행도 분기됩니다.

실행 프로세스를 분기해야 하는지 여부를 나타내는 플래그입니다.디폴트로는 프로세스 포킹은 에이전트 또는jvmArguments지정됩니다.

그 때문에, 의 사용법은jvmArguments또한 플러그인 실행의 포크 모드도 활성화했습니다.포킹으로 다른 사람을 주워담는 게 아니라-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"

-- Edit 22/09/20 이 답변을 보완하려면 @Stephane의 다른 답변도 체크합니다(파라미터의 프레픽스).

spring-boot 2.0부터는 이름이 변경되었습니다.자세한 내용은 다음을 참조하십시오.

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

  • run.jvmArguments -> spring-boot.run.jvmArguments
  • spring-boot.run.spring-boot.run.disc

redhat 매뉴얼에 따릅니다.

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=$PORT_NUMBER"

Powershell을 사용하여 Maven 명령줄에서 스프링 부트 속성을 재정의합니다.

  • 스프링 부트 2.4.4
  • 메이븐 3.6.3
  • Powershell Windows 10

이 방법은 효과가 있었습니다.

mvn spring-boot:run  -D"spring-boot.run.jvmArguments"="-Dimport.dataset.list=importpb"

한 가지 문제가 더 있습니다.pom.xml이 jvmArguments를 정의하면 명령줄 인수는 무시됩니다.

<plugin>
    <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <jvmArguments>-Xmx2048m -XX:NativeMemoryTracking=summary --enable-preview</jvmArguments>
        </configuration>
</plugin>

디버깅 속성을 런처 중 하나에 추가하려면

-Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8282"

안 먹힐 거야

언급URL : https://stackoverflow.com/questions/36217949/maven-spring-boot-run-debug-with-arguments

반응형