개요
이번 글에서는 Spring Boot로 만든 프로젝트를 WAR로 빌드하여 외장 톰캣에 배포하는 방법에 대해 이야기해보려고 한다.
프로젝트 설정
필자의 프로젝트 설정은 Spring Boot + Gradle과 Tomcat 8.5를 사용하고 있다.
SpringBootApplication 추가
package com.btest.test;
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 TestApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TestApplication.class);
}
}
SpringBootServletInitializer를 Override하는 코드를 추가해준다.
build.gradle 추가
plugins {
id 'org.springframework.boot' version '2.7.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
}
group = 'com.test'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
bootWar{
archiveBaseName = 'test'
archiveFileName = 'test.war'
archiveVersion = "0.0.0"
}
bootWar.enabled = true
war.enabled = false
tasks.named('test') {
useJUnitPlatform()
}
WAR 빌드 관련 설정들을 추가해주고 gradle을 refresh 해준다.
WAR 파일 생성하기
1. IntelliJ 기준 오른쪽 끝의 Gradle 탭을 눌러준다.
2. Gradle 창이 열리면 build 폴더 아래에 bootWar를 클릭하여 Build Task를 수행시켜준다.
3. Task가 정상적으로 수행 됐다면 프로젝트의 build 폴더 아래의 libs 폴더로 이동해준다.
4. libs 폴더 아래의 WAR 파일이 정상적으로 생성 됐음을 확인한다.
5. 이후 해당 WAR 파일을 Tomcat의 webapps 폴더 아래에 위치 시킨다. (필자는 webapps 폴더에 삭제한 부분이 있어 다를 수 있음)
또는 해당 WAR를 ROOT 로 지정해준다. (or server.xml을 수정하여 참조하는 경로를 수정)
6. WAR 파일을 배치시켰다면 Tomcat의 bin 폴더의 startup 배치 파일을 실행시킨다.
7. 톰캣이 실행되고 자신이 지정한 포트/프로젝트명/가고싶은 경로로 들어가면 내용이 정상적으로 출력되는 것을 알 수 있다. (URL 같은 경우도 server.xml을 수정하여 바꿀 수 있다.)
'Spring' 카테고리의 다른 글
[Spring] Ajax에서 Success값이 넘어오지 않을 때 확인해봐야 할 사항들 (0) | 2022.09.22 |
---|---|
[Spring] pom.xml 빌드 후 발생하는 instruction can not have PITarget with reserved xml name 에러 해결하기 (0) | 2022.09.20 |
[Spring] SpringBoot 프로젝트에서 모바일, 태블릿 기기 식별하기 (0) | 2022.09.06 |
[Spring] 프로젝트에 MSSQL 연동 후 AbstractMethodError가 발생하는 문제 해결하기 (0) | 2022.08.24 |
[Spring] 블로그 프로젝트 - 랜덤 추천 글 생성 버그 해결하기 (0) | 2022.05.02 |