복붙노트

[SPRING] mvn spring-boot : vs java -jar 실행

SPRING

mvn spring-boot : vs java -jar 실행

나는 어리석은 질문이 들리 겠지만 mvn spring-boot와 java -jar (mvn install로 생성 된 .jar 파일)의 차이점을 이해할 수 없다.

/ src / main / resources / META-INF / resources / WEB-INF /에 jsp 페이지가있는 스프링 부팅 응용 프로그램이 있습니다. mvn spring-boot :를 사용하면이 페이지들이 실행됩니다. 하지만 java -jar를 사용하면 이러한 페이지는 응용 프로그램에서 찾을 수 없습니다.

현재 작업중인 애플리케이션은 https://github.com/ArslanAnjum/angularSpringApi입니다.

최신 정보: 최신 버전 인 1.5.8.RELEASE를 사용하는 동안 스프링 부트 1.4.2.RELEASE와 함께 작동합니다.

최신 정보: 그럼 내가 src / main / webapp / WEB-INF / views /에 jsps를 두어 패키징 유형을 war로 변경 한 다음 java -jar target / myapp.war와이 작업을 지금 사용하여이 문제를 해결함으로써이 문제를 해결했습니다.

해결법

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

    1.짧은 답변 : spring-boot : run은 Maven 빌드의 일부로 실행되는 steroïd에 대한 java -jar 명령입니다. 필요한 모든 매개 변수가 리소스와 같이 앱에 전달되도록합니다. spring-boot : run은 앱을 실행하기 전에 테스트 컴파일 라이프 사이클 목표를 실행하여 프로젝트가 컴파일되도록합니다.

    짧은 답변 : spring-boot : run은 Maven 빌드의 일부로 실행되는 steroïd에 대한 java -jar 명령입니다. 필요한 모든 매개 변수가 리소스와 같이 앱에 전달되도록합니다. spring-boot : run은 앱을 실행하기 전에 테스트 컴파일 라이프 사이클 목표를 실행하여 프로젝트가 컴파일되도록합니다.

    긴 대답 :

    java -jar를 실행하면이 JVM에 전달한 모든 매개 변수를 사용하여 새 JVM 인스턴스를 시작합니다. 예를 들어, Spring doc 예제 사용하기

    java -Xdebug -Xrunjdwp:server=y, \
        transport=dt_socket, address=8000, suspend=
        -jar target/myproject-0.0.1-SNAPSHOT.jar
    

    주어진 매개 변수로 새로운 JVM을 시작할 것입니다. classpath 요소, 응용 프로그램 매개 변수, JVM 옵션 등과 같이 필요한 모든 것을 명령 줄에 포함시켜야합니다.

    mvn spring-boot :를 실행하면 다음과 같은 Maven 빌드가 시작됩니다.

    에 따라 :

    왜냐하면 mvn spring : boot 명령은 앱이 실행 중일 때 Classpath에 target / classes 폴더가 있는지 확인하기 때문입니다. 컴파일이 끝나면이 폴더에는 target / classes / META-INF / resources / WEB-INF가 포함됩니다. 그러면 앱에서 META-INF / resources / WEB-INF를 찾아 질문 할 때로드 할 수 있습니다. java -jar 명령을 실행하면이 폴더는 클래스 경로에없는 것일 수 있습니다. 그러면 응용 프로그램에서 자원을 찾을 수 없습니다. (이 자원들은 resources : resources 목표 동안 src / main / resources 폴더에서 복사되었습니다)

    java -jar 명령으로 비슷한 결과를 얻으려면 javar -jar myapp.jar -cp $ CLASSPATH; / path / to / my / project / target / classes /와 같은 클래스 경로에 자원을 포함시켜야합니다.

  2. ==============================

    2.java -jar를 사용하여 jar 파일을 실행할 때 mvn 대신 mvn 패키지를 사용하여 jar 파일을 만들려고 했습니까? 패키지는 POM 파일에 따라 jar / war를 만들지 만 install은 생성 된 jar 파일을 다른 저장소가있는 경우 로컬 저장소에 설치합니다.

    java -jar를 사용하여 jar 파일을 실행할 때 mvn 대신 mvn 패키지를 사용하여 jar 파일을 만들려고 했습니까? 패키지는 POM 파일에 따라 jar / war를 만들지 만 install은 생성 된 jar 파일을 다른 저장소가있는 경우 로컬 저장소에 설치합니다.

  3. from https://stackoverflow.com/questions/47258695/mvn-spring-bootrun-vs-java-jar by cc-by-sa and MIT license