-
이 글은 외장 톰캣에 웹 애플리케이션을 배포하기 위해 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 파일이 생성됩니다.
'Spring' 카테고리의 다른 글
[Spring + Thymeleaf] messages 국제화 (0) 2025.11.14 [Spring MVC] Form 검증 (0) 2025.11.13 [Spring] 전자정부프레임워크 crypto를 활용한 암호화 (0) 2024.06.17 [Spring] @RequestBody와 @ResponseBody를 사용해 JSON 형식의 데이터 주고받기 (0) 2023.08.31 스프링 IoC 컨테이너와 빈의 생성 (0) 2023.06.26