독립적으로 실행 가능한 JAR

Crow·2021년 8월 4일
0
post-thumbnail

학습목표

  • 프로젝트를 Build 하여 생성된 JAR 파일로 Application을 실행할 수 있다.
  • JAR 구조 및 원리를 이해한다.

JAR

터미널 상에서 프로젝트 빌드를 해보자.
프로젝트 루트 경로로 이동하여 아래 명령어를 실행한다.

./mvnw clean package

빌드 시간을 단축하고 싶다면

빌드할 때, 테스트 코드 과정을 생략할 수 있다.

./mvnw clean package -DskipTests

빌드 결과물 : JAR

빌드를 성공하게 되면 프로젝트 내에 'target' 이라는 디렉토리가 생성되고
하위에는 아래와 같이 빌드 패키징의 결과물인 JAR 파일을 가지고 있다.

JAR로 Application 실행

다음과 같이 명령어를 실행하면 IDE에서 'Run Application'으로 Application을
실행한 것과 똑같이 Application을 실행할 수 있음을 볼 수 있다.

java -jar '파일이름.jar'

JAR 파일 구조

'target' 디렉토리 내에 'app' 디렉토리를 하나 생성하고
아래 명령어로 jar파일을 unzip 하여 파일의 구조를 살펴보자.

unzip -q '파일 이름.jar'

  • classes/
    • 프로젝트에 작성한 클래스들이 들어있다.
  • lib/
    • maven(gradle or yml) dependency를 통해 Application 실행에 필요한
      수 많은 라이브러리들이 들어있다.
      이 때, 각 라이브러리들의 확장자는 모두 jar로 되어 있다.

springboot의 jar에 대한 전략

jar 파일 구조는 바로 위 lib 설명에서 말 했듯이 프로젝트 빌드 패키징의 결과물인
jar 파일 내에 필요한 라이브러리들 또한 jar 파일인 내장 JAR 구조다.

그리고, JAVA에는 기본적으로 jar 내 파일들을 읽을 수 있는 표준적인 방법이 없다.

그래서 springboot는 이러한 jar를 읽을 수 있는 loader 파일과 실행 가능하게
해주는 launcher 파일을 jar 내에 만들어놓았다.

  • org.springframework.boot.loader.jar.JarFile : loader
  • org.springframework.boot.loader.Launcher : launcher

이러한 springboot 원리 덕에 패키징 된 jar 파일이 실행 가능한 것이다.

profile
올빼미를 사냥한 까마귀에서 진화한 독수리

0개의 댓글

관련 채용 정보