터미널 상에서 프로젝트 빌드를 해보자.
프로젝트 루트 경로로 이동하여 아래 명령어를 실행한다.
./mvnw clean package
빌드할 때, 테스트 코드 과정을 생략할 수 있다.
./mvnw clean package -DskipTests
빌드를 성공하게 되면 프로젝트 내에 'target' 이라는 디렉토리가 생성되고
하위에는 아래와 같이 빌드 패키징의 결과물인 JAR 파일을 가지고 있다.
다음과 같이 명령어를 실행하면 IDE에서 'Run Application'으로 Application을
실행한 것과 똑같이 Application을 실행할 수 있음을 볼 수 있다.
java -jar '파일이름.jar'
'target' 디렉토리 내에 'app' 디렉토리를 하나 생성하고
아래 명령어로 jar파일을 unzip 하여 파일의 구조를 살펴보자.
unzip -q '파일 이름.jar'
jar 파일 구조는 바로 위 lib 설명에서 말 했듯이 프로젝트 빌드 패키징의 결과물인
jar 파일 내에 필요한 라이브러리들 또한 jar 파일인 내장 JAR 구조다.
그리고, JAVA에는 기본적으로 jar 내 파일들을 읽을 수 있는 표준적인 방법이 없다.
그래서 springboot는 이러한 jar를 읽을 수 있는 loader 파일과 실행 가능하게
해주는 launcher 파일을 jar 내에 만들어놓았다.
이러한 springboot 원리 덕에 패키징 된 jar 파일이 실행 가능한 것이다.