ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • bootWar
    Spring 2025. 11. 25. 20:50

     

    이 글은 외장 톰캣에 웹 애플리케이션을 배포하기 위해 bootWar 작업을 수행하는 예시를 작성한 글입니다. bootWar란 gradle이 제공하는 태스크로, 스프링부트 애플리케이션을 war 파일로 빌드하는 작업입니다.

     

    plugins 설정

    gradle은 기본적으로 jar를 지원하기 때문에, 따로 war 플러그인을 추가해야 합니다.

    build.gradle

    plugins {
        // ...
        id 'war'
    }

     

    혹은

    apply plugin: 'war'

     

    위와 같이 설정하면, Gradle Tasks - build에 bootWar(스프링부트)와 war(순수) 작업이 추가됩니다.

     

    아래와 같이 build.gradle에 어떻게 빌드할 것인지 명시해줄 수도 있습니다.

    bootWar로 빌드할거다.

    apply plugin: 'war'
    
    bootWar.enabled = true
    war.enabled = false
    
    // ...

     

    war로 빌드할거다.

    apply plugin: 'war'
    
    bootWar.enabled = false
    war.enabled = true
    
    // ...

     

     

    또한 스프링부트 내장 톰캣으로 배포하는 것이 아니라, 외장 톰캣에 배포 가능한 war를 만드는 것이 목표이기 때문에, 내장 톰캣은 war 파일에서 제외하는 작업이 필요합니다.

    dependencies {
        // ...
        providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    }

     

     

    Application main class 설정

    외장 톰캣이 제공하는 서블릿 컨텍스트 초기화 방식으로 동작해야 하기 때문에 SpringBootServletInitializer를 상속합니다.

    @SpringBootApplication
    public class MyApplication extends SpringBootServletInitializer {
    
        @Override 
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
            return application.sources(MyApplication.class); 
        }
    
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }

     

     

    Task 실행 예시(이클립스)

    Gradle Tasks View 추가

     

    Task 실행

     

    실행 결과

    프로젝트 루트/build/libs 경로에 war 파일이 생성됩니다.

    댓글

Designed by Tistory.