본문 바로가기
Web

[IntelliJ] war과 war(exploded)의 차이

by soro.k 2022. 9. 28.

 

들어가기 전에

최근에 <자바 웹 프로그래밍 Next Step>을 보고 2일 전부터는 <자바 웹 개발 워크북>이란 책을 보고 있는데 톰캣 설정을 하면서 Deployment 탭 설정을 안 해줬을 때 계속해서 아래와 같은 경고 메시지가 떴다. 

 

처음에 <자바 웹 프로그래밍 Next Step>으로 서블릿 실습을 할 때 zip파일을 프로젝트로 가져오면서 톰캣이 실행 안되는 오류가 났었는데 그때 Artifacts를 도대체 어떻게 만들라는 건지 다른 사람들 실습 과정처럼 화면이 나오지 않아서 당황했던 기억이 있다. 그때 상황을 캡쳐하고 기록해놨어야 하는데 아쉽게도 기록해두지 못했다. 그때 톰캣 서버가 뜨지 않았던 원인은 스프링 MVC 프레임워크를 추가해주지 않아서 생긴 거였다. 그거 하나로 이틀을 낭비했는데 되게 낙심했었다. 

 

아무튼 스프링 MVC 프레임워크를 추가하고 나서는 알아서 war(exploded)로 설정이 됐었다. 그때도 그렇고 이번에도 그렇고 도대체 war랑 war(exploded)는 뭐가 다르길래 다들 exploded로 선택하는 걸까 궁금했다.

 

 

여담으로 Artifacts의 정의를 제대로 보려고 jetbrains 사이트에 들어갔는데 한국어 번역이 너무 귀여웠다.

유물,,

 

Artifacts

프로젝트를 build 했을 때 생성되는 결과물이다. 아티팩트는 다음 구조적 요소를 포함하는 아카이브 파일 또는 디렉토리 구조일 수 있다.

- 하나 이상의 모듈에 대한 컴파일 출력

- 모듈 종속성에 포함된 라이브러리

- 리소스 모음(웹 페이지, 이미지 등)

- 개별 파일, 디렉토리 및 아카이브 등

 

 

Build와 Deployment의 차이

한 블로거 분이 비유적으로 잘 표현해 주셔서 잘 와닿았다. 책 번역과 출판을 예로 들어서 설명을 해주셨는데 우선 영문을 한글로 번역하는 단계가 컴파일, 번역한 글을 책으로 엮는 것이 빌드 그리고 완성된 책을 서점에 진열하는 게 배포라고 하셨다. 어느 회사에서는 컴파일과 빌드 과정을 통틀어서 빌드한다고 표현하기도 한다고 하셨다.

 

- 빌드(Build) : 컴파일된 코드를 실제 실행할 수 있는 상태로 만듦

- 배포(Deployment) : 빌드가 완성된 실행 가능한 파일을 사용자가 접근할 수 있는 환경에 배치시킴

 

사용자가 접근할 수 있는 환경에 배치한다는 게 빌드하고 나서 나오는 산출물인 파일을(war, jar, ...) 웹 서버에 올리거나 사용자에게 주는 것이다. 

 

그래서 war와 war(exploded)는 도대체 뭐가 다르지?

 

war vs war(exploded)

 

내가 제대로 이해한 게 맞다면 war는 패키지의 형태로, war exploded는 최근 폴더의 위치 기반으로 서버에 산출물 정보가 보내진다.

 

war mode는 출시 모드라고 할 수 있는데 말 그대로 개발이 완료된 프로그램을 출시할 때 쓴다. 반대로 war exploded는 작업한 폴더나 jsp 페이지들, 클래스 등등이 톰캣의 배포 폴더로 옮겨지면서 로딩과 배포를 하게 된다. 그래서 개발하는 동안에 사용되는 hot deployment에 쓰여진다고 한다.

 

참고로, hot deployment는 서버를 재시작하지 않고 프로그램 내의 동적 변경을 바로 적용시키는 기능이다. 

 

 

 

 

 

 

참고

- https://blog.actorsfit.com/a?ID=01200-88ad37e1-8983-4d58-9688-e615121f2741 

- https://itholic.github.io/qa-compile-build-deploy/

- https://velog.io/@leyuri/Intellij-%EC%9B%B9-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%B0%B0%ED%8F%AC-%EC%9C%84%ED%95%9C-%ED%8C%A8%ED%82%A4%EC%A7%80-%EC%9C%A0%ED%98%95%EA%B3%BC-war-warexploaed-%EC%B0%A8%EC%9D%B4

- https://m.blog.naver.com/dktmrorl/222045899282