-
Spring Boot war 파일 생성하기TECH/Spring 2021. 9. 11. 15:29
SpringBootServletInitializer
서브클래스를 생성하고,configure
메소드를 오버라이딩한다.
이를 통해 Spring Framework의 서블릿 3.0 지원을 사용할 수 있고, 서블릿 컨테이너에 의해 애플리케이션이 실행됐을 때 애플리케이션을 설정할 수 있게 된다. 일반적으로, 아래와 같이 애플리케이션의 메인 클래스가 `SpringBootServletInitializer` 를 상속할 수 있도록 수정해야 한다.
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.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); } }
- 빌드 설정을 수정하여 프로젝트가 jar 파일이 아닌 war 파일을 생성하도록 한다.
(Gradle 사용시 아래와 같이 수정한다.)
apply plugin: 'war'
- 내장된 서블릿 컨테이너가 war 파일이 배포되는 서블릿 컨테이너를 방해하지 않도록 한다. 이를 위해 내장 서블릿 컨테이너의 디펜던시를 provided로 설정한다.
(Gradle 사용시 아래와 같이 수정한다.)
dependencies { // ... providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' // ... }
Spring Boot build tools을 사용할 경우, 내장 서블릿 컨테이너 디펜던시를 `provided`로 설정하면 `lib-provided` 디렉토리에 패키징된 디펜던시를 가진 실행 가능한 war 파일을 생성한다. 즉, 서블릿 컨테이너에 배포할 수 있을 뿐만 아니라 `java -jar` 커맨드를 이용하여 애플리케이션을 실행시키 수 있다.
'TECH > Spring' 카테고리의 다른 글
Spring Data R2DBC + Jasync 사용시 AbstractMethodError가 발생하는 경우 (0) 2022.10.31 Spring Boot 애플리케이션의 Health Endpoint 상태가 Eureka에 영향을 끼칠까? (0) 2022.10.14 Spring Data R2DBC - R2DBC란? (0) 2022.06.16 Spring Cloud Gateway의 RouteDefinitionRepository (0) 2022.06.07 logback-spring.xml과 application.yml의 로그 설정 중 어떤 것이 우선 순위가 더 높을까 (0) 2022.02.21