IntelliJ에서 War 파일을 추출하고 외부 Tomcat으로 배포하여 실행할 수 있다.

Goal

  • IntelliJ에서 War 파일을 추출할 수 있다.
  • 추출한 War 파일로 Tomcat에 배포할 수 있다.

기본적인 용어

참고 웹 애플리케이션을 배포하기 위한 패키징 유형(3가지)

  1. package(archive)
    • 아카이브(.war, .ear) 파일로 배포
      • 아카이브는 WAS(Tomcat)에 의해 압축이 풀린다.
      • 파일이 많은 경우 압축을 푸는 시간이 오래 걸릴 수 있다.
      • 원격 서버에 배포시 한 개의 파일만 전송하면 된다.
      • WAS(Tomcat)에서 제공하는 업로드를 통한 배포 기능을 활용할 수 있다.
  2. exploded(expanded)
    • 아카이브를 압축 해제한 형태의 디렉터리로 배포
      • 별도의 디렉터리에 원본 소스를 복사하여 만든다.
      • 압축 및 해제 과정이 불필요하다.
      • 파일이 많은 경우 복사하는 시간이 오래 걸릴 수 있다.
      • 원본 소스를 건드리지 않고 배포를 원하는 경우에 적합하다.
      • 원격 서버에 배포시 파일이 많은 경우 전송 시간이 오래 걸릴 수 있다.
  3. in-place
    • 소스 디렉터리(전체 또는 일부)를 그대로 배포
      • 추가적인 복사 과정 불필요하다.
      • 로컬 서버에 배포하는 경우에 적합하다.
      • WAS(Tomcat)가 런타임시 생성하는 파일이 소스와 섞일 수 있는 문제가 있다.

IntelliJ에서 War 파일 추출 및 빌드

1. Project Structure > Project Settings > Artifacts

  1. File - Project Structure 선택 또는 단축키 이용
    • MacOS: (cmd + ;), Windows: (Ctrl + Alt + Shift + S) 이용
  2. Project Setting의 Artifacts 선택
    • Build Artifact: 빌드의 결과물로 생성할 형태를 정할 수 있다.
      • archive: 아카이브(.war, .ear) 파일로 배포
      • exploded: 아카이브를 압축 해제한 형태의 디렉터리로 배포

2. War 파일 추출을 위한 Build Artifact 설정

  1. 상단에 + 클릭 > Web Application: Archive > For ‘PROJECT_NAME:war exploded’ 선택
    • 빌드의 결과물로 ‘PROJECT_NAME:war exploded’에 대한 war 파일을 생성하도록 설정한다.
    • ‘PROJECT_NAME:war exploded’가 기본 설정
  2. PROJECT_NAME_war.war —> PROJECT_NAME.war로 수정

3. War 파일 추출을 위한 Build

  1. Build - Build Artifacts 클릭
  2. ‘PROJECT_NAME:war’ 선택 > build 클릭
    • 빌드의 결과물로 ‘PROJECT_NAME:war exploded’에 대한 war 파일이 생성된다.

4. 추출한 War 파일 확인

참고 빌드 결과물이 위치할 폴더


참고 Eclipse에서 War 파일 추출


추출한 War 파일 Tomcat에 배포 후 실행

1. 추출한 .war를 Tomcat/webapps 디렉터리 하위로 이동

2. 외부 Tomcat을 실행

3. Tomcat을 실행시키면 패키징되어있던 war 파일 압축 해제

4. url로 접속해서 테스트

Tomcat 배포 과정 요약

  1. Tomcat/webapps/ 디렉터리 하위에 WAR_NAME.war 이동
  2. Tomcat Server 실행 -> WAR_NAME.war 압축 해제
  3. Tomcat/webapps/WAR_NAME 디렉터리 생성
  4. http://localhost:8080/WAR_NAME/로 접속 가능

관련된 Post

References