본문 바로가기
개발 공부

[Jar, War] feat. 스프링

by 도됐좋 2023. 5. 22.
순서
1. Jar vs War
2. Jar 구성 요소
3. War 구성 요소

✅ Jar vs War

- 스프링 프로젝트를 시작(https://start.spring.io/)할 때마다 보는 Jar, War

 

 공통점

- 자바의 툴을 이용하여 생성되는 압축 파일

- 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성파일)들을 패키징

 

차이점

- Jar(Java ARchive)

  : 자바 클래스 파일과, 라이브러리, 리소스들을 하나의 파일로 모아서 압축한 파일 포맷

  : 주로 자바 어플리케이션을 배포하기 위한 형식

  : 원하는 구조로 구성 가능

  : JRE만으로 실행 가능

- War(Web application ARchive)

  : JSP, HTML 또는 웹 애플리케이션을 이루는 자원들을 하나의 파일로 모아서 압축한 Jar 파일의 일종

  : 주로 웹 어플리케이션을 배포하기 위한 형식

  : WEB-INF, META-INF 구조를 따라야함

  : 웹 서버나 WAS가 있어야 실행 가능


Jar 구조 (with 스프링)

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/

 

META-INF

- 프로젝트 매니페스트 파일을 포함하는 폴더

**매니페스트 파일 : 파일 그룹을 위한 메타데이터(이름, 버전, 라이선스, 프로그램 구성 등)를 포함하는 파일

- 일반적인 Jar 매니페스트에서 Main-Class는 Main 메소드가 있는 클래스로 설정되지만

  스프링부트의 Main-Class에서는 JarLauncher라는 클래스로 설정됨

 

org

- spring boot loader classes 모듈 저장됨

 

BOOT-INF

- 개발자가 직접 작성한 클래스 파일들과, 의존성 주입을 통한 jar 파일들로 구성됨


War 구조 (with 스프링)

 

 META-INF

- jar와 마찬가지로 매니페스트 파일을 포함하는 폴더

- 글의 첫 부분에서 War 파일은 웹 서버나 WAS가 있어야 실행 가능하다고 했는데

  스프링부트에서는 단독으로 실행 가능한 경우도 있음

 

 org

- spring boot loader classes 모듈 저장

 

WEB-INF

- 개발자가 직접 작성한 class와 jar 파일, view 파일까지 포함된 디렉토리

- 웹 어플리케이션의 사전 정의된 구조를 따르기 때문에 외장 WAS나 JSP를 사용할 일이 있다면

  WAR를 이용하여 배포해야 함