자바에서 웹어플리케이션은 JEE 스펙에서 정의한 디렉토리 구조를 갖는 war 파일의 형태로 컨테이너에 배포됩니다. 메이븐에서는 웹어플리케이션을 package 단계에서 기본적으로 war 파일로 포장합니다.

그런데 꼭 war라는 아카이브 파일로만 배포할 수 있는 건 아닙니다. maven-war-plugin 플러그인에는 war:war 골뿐만 아니라 war:exploded나 war:in-place도 있습니다.

웹어플리케이션을 배포하기 위한 패키징 유형을 3가지로 나눌 수 있습니다.

1. package(archive) : 아카이브(war,ear) 파일로 배포
- 아카이브는 결국 WAS에 의해 압축이 풀림
- 파일이 많을 경우 압축해제 시간 오래걸릴 수 있음
- 리모트 서버에 배포시 한개의 파일만 전송하면 됨
- WAS에서 제공하는 업로드를 통한 배포기능 활용가능

2. exploded(expanded) : 아카이브를 압축해제한 디렉토리 형태 구조
- 압축 및 해제 과정이 불필요
- 별도의 디렉토리에 원본 소스를 복사하여 만듬
- 파일이 많은 경우 복사 시간 오래걸릴 수 있음
- 원본 소스를 건드리지 않고 배포를 원하는 경우 적합
- 리모트 서버에 배포시 파일이 많은 경우 전송 시간이 오래걸릴 수 있음.(rsync는 빠르다?)

3. in-place : 소스 디렉토리(전체 또는 일부)를 그대로 배포
- 추가적인 복사 과정 불필요
- 로컬 서버에 배포하는 경우에 적합
- WAS가 런타임시 생성하는 파일이 소스와 섞일 수 있음

Posted by 에코지오
,