본문 바로가기
SpringBoot/배포 및 운영

Spring Boot 패키징(JAR, WAR)

by DEVLIB 2025. 4. 15.
728x90

Spring Boot 패키징 방식 비교

항목 JAR WAR
실행 방식 java -jar WAS(Tomcat 등)에 배포
내장 서버 포함 (톰캣, 제티 등) 외부 WAS 필요
설정 복잡도 단순 복잡
배포 대상 클라우드, 도커, 독립 서버 전통적인 WAS 서버
스프링 부트 기본값 JAR 선택적 지원

1. JAR 패키징 방식 (기본)

설정 (build.gradle)

plugins {
    id 'org.springframework.boot' version '3.2.0'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'java'
}

bootJar {
    archiveFileName = 'myapp.jar'
}

실행

./gradlew bootJar
java -jar build/libs/myapp.jar

스프링 부트의 기본 내장 톰캣이 실행되며 JAR 단독으로 애플리케이션 실행 가능


2. WAR 패키징 방식 (전통 WAS 배포용)

사용 목적

  • WebLogic, WebSphere, 외부 Tomcat 같은 전통적인 WAS 환경에 배포할 때 사용

설정 변경

build.gradle

plugins {
    id 'war'
}

bootJar {
    enabled = false
}

bootWar {
    enabled = true
    archiveFileName = 'myapp.war'
}
 

src/main/webapp/ 폴더 생성 (옵션)

  • WAR 프로젝트는 전통적으로 web.xml, JSP, 정적 리소스를 이곳에 배치

Application 클래스 수정

@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(MyApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

실행

  1. ./gradlew bootWar
  2. build/libs/myapp.war 생성됨
  3. Tomcat 서버의 /webapps/ 폴더에 복사
  4. 서버 재시작

어떤 방식을 선택할까?

상황 추천 방식
단독 실행 서버, 클라우드, Docker 사용 JAR (Spring Boot 기본값)
전통적인 WAS(Tomcat 등) 환경 WAR
개발 초기에 빠른 배포 테스트 JAR
조직 정책에 따라 WAR 강제 WAR 구성 필요

마무리 요약

항목 JAR WAR
사용 용도 독립 실행 (Spring Boot 내장 서버 사용) WAS에 배포 필요
설정 매우 단순 초기 설정 필요
커스터마이징 Spring Boot 친화적 전통 웹 구조 호환 가능
실무 추세 ✅ JAR 중심 레거시 환경만 WAR 유지 중
LIST

'SpringBoot > 배포 및 운영' 카테고리의 다른 글

로그 관리(Logback, Log4j2)  (0) 2025.04.16
CI/CD (GitHub Actions, Jenkins)  (0) 2025.04.16
AWS EC2에 배포하기  (0) 2025.04.16