배경

그동안 스프링 부트 프로젝트 생성 시 패키지 생성 부분에서 무작정 Jar를 선택해왔다. 갑자기 가만 보니 저 둘은 무슨 차이가 있는지 잘 모르고 있다는 것을 알았다.
그래서 각 용어의 개념들을 보고 Spring Boot 기반의 프로젝트는 어떤 걸 선택하는지 알아보겠다.
개념

JAR(Java ARchive, 자바 아카이브)
- 여러 개의 자바 클래스 파일과 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷
- 데스크톱 애플리케이션에서 구동
WAR(Web application ARchive, 웹 애플리케이션 아카이브)
- JSP, Servlet, Class, XML, 태그 라이브러리, 정적 웹 페이지 및 웹 애플리케이션을 함께 이루는 기타 자원을 한데 모아 배포하는 데 사용되는 파일 포맷
- 애플리케이션 서버에서 구동
Spring Boot에서 JAR
Spring Boot에서는 JAR가 디폴트인데 그 이유는 JSP에 있다.
아래는 Spring Boot 공식 문서의 내용이다.
Spring Boot Reference Documentation
This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe
docs.spring.io

- JSP는 executable jar을 사용할 때는 지원하지 않는다.
- Undertow는 JSP를 지원하지 않는다.
- 커스텀 error.jsp 는 에러 핸들링을 위한 디폴드 뷰를 오버라이드 하지 않는다.
위와 같은 이유로 Spring Boot는 jar를 권장하는 것처럼 보인다.
<참고>
https://ko.wikipedia.org/wiki/JAR_(%ED%8C%8C%EC%9D%BC_%ED%8F%AC%EB%A7%B7)
https://ko.wikipedia.org/wiki/WAR_(%ED%8C%8C%EC%9D%BC_%ED%8F%AC%EB%A7%B7)
https://stackoverflow.com/questions/5871053/difference-between-jar-and-war-in-java
https://old-developer.tistory.com/m/171
배경

그동안 스프링 부트 프로젝트 생성 시 패키지 생성 부분에서 무작정 Jar를 선택해왔다. 갑자기 가만 보니 저 둘은 무슨 차이가 있는지 잘 모르고 있다는 것을 알았다.
그래서 각 용어의 개념들을 보고 Spring Boot 기반의 프로젝트는 어떤 걸 선택하는지 알아보겠다.
개념

JAR(Java ARchive, 자바 아카이브)
- 여러 개의 자바 클래스 파일과 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷
- 데스크톱 애플리케이션에서 구동
WAR(Web application ARchive, 웹 애플리케이션 아카이브)
- JSP, Servlet, Class, XML, 태그 라이브러리, 정적 웹 페이지 및 웹 애플리케이션을 함께 이루는 기타 자원을 한데 모아 배포하는 데 사용되는 파일 포맷
- 애플리케이션 서버에서 구동
Spring Boot에서 JAR
Spring Boot에서는 JAR가 디폴트인데 그 이유는 JSP에 있다.
아래는 Spring Boot 공식 문서의 내용이다.
Spring Boot Reference Documentation
This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe
docs.spring.io

- JSP는 executable jar을 사용할 때는 지원하지 않는다.
- Undertow는 JSP를 지원하지 않는다.
- 커스텀 error.jsp 는 에러 핸들링을 위한 디폴드 뷰를 오버라이드 하지 않는다.
위와 같은 이유로 Spring Boot는 jar를 권장하는 것처럼 보인다.
<참고>
https://ko.wikipedia.org/wiki/JAR_(%ED%8C%8C%EC%9D%BC_%ED%8F%AC%EB%A7%B7)
https://ko.wikipedia.org/wiki/WAR_(%ED%8C%8C%EC%9D%BC_%ED%8F%AC%EB%A7%B7)
https://stackoverflow.com/questions/5871053/difference-between-jar-and-war-in-java
https://old-developer.tistory.com/m/171