Spring Boot(스프링부트)를 이용하여 구축한 프로젝트를 jar 또는 war 파일로 배포할 수 있다.
스프링부트 애플리케이션을 개발해 보았다면, 기본적으로 톰캣 서버가 내장되어 있는 것을 알 수 있다.
이를 그대로 가져다 서버를 내장하여 배포할 것이라면 jar 파일로,
WAS(tomcat 등) 환경이 이미 존재하여 스프링부트 애플리케이션만을 배포할 것이라면 war 파일로 배포할 수 있다.
* 이 글은 <2시간 안에 REST API 핵심 구축하는 방법> 전자책의 일부 내용입니다.
Spring Boot REST API에 관한 보다 자세한 내용이 필요하시다면 다음 링크에서 확인하실 수 있습니다.
※개발환경
Spring boot 2.3.3 - Maven
<글의 순서> 1. jar 파일로 빌드 및 배포 2. war 파일로 빌드 및 배포 |
1. jar 파일로 빌드 및 배포
pom.xml에 jar로 빌드하기 위한 설정을 추가하고,
프로젝트 컨텍스트 메뉴를 이용하여 Maven build를 실행한다.
① pom.xml
<packaging>이라는 프로퍼티를 추가하고 값을 jar로 작성한다. (이미 있다면 값이 jar로 지정되어 있는지 확인)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
...
... 생략
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<!-- 배포 형식 지정 -->
<packaging>jar</packaging>
...
... 생략
② 프로젝트 Maven build
- [프로젝트 우클릭] → [Run As] → [Maven build...]를 차례로 선택한다.
- Goals에 package를 입력하고, Run 버튼을 클릭한다.
- console에 BUILD SUCCESS가 표시되고, 프로젝트 폴더 안 target 폴더에는 jar파일이 생성되어 있다.
이 것으로 jar 확장자의 배포 파일이 작성되었다.
💡 jar 파일 java로 실행하기 (Windows 환경 Powershell 혹은 명령 프롬프트에서) (파일이 위치한 폴더에서) > java -jar [jar 파일명].jar 예) > java -jar demo-0.0.1-SNAPSHOT.jar |
2. war 파일로 빌드 및 배포
pom.xml war로 빌드하기 위한 설정을 추가하고,
역시 프로젝트 컨텍스트 메뉴를 이용하여 Maven build를 실행한다.
① pom.xml : <packaging>
- <packaging> 프로퍼티 값을 war로 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
...
... 생략
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<!-- 배포 형식 지정 -->
<packaging>war</packaging>
...
... 생략
② pom.xml : <dependency>
- jar와는 다르게 추가적으로 dependency의 추가가 필요하다.
이는 컴파일 단계에서만 tomcat 라이브러리를 이용(scope를 provided로 지정) 하고,
배포 이후에는 내장 tomcat이 아닌 이미 존재하는 tomcat 서버를 이용하기 위함이다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
③ Spring Boot Application 클래스에 소스 추가하기
프로젝트에서 main 메소드가 존재하는, 스프링부트 앱을 시작하는 역할을 하는 클래스가 있다.
(@SpringBootApplication 어노테이션이 지정되어 있음)
이 클래스에 다음과 같이 SpringBootServletInitializer를 상속하고,
@Override 메소드를 추가한다. (메소드 내 클래스명은 작업 중인 프로젝트마다 다르다.)
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
// 이 부분을 추가함 (war 배포를 위한 소스)
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
④ 프로젝트 Maven build (이 단계는 jar 파일 빌드 방법과 같기때문에 텍스트로만 설명한다. 스크린샷은 위를 참고하자.)
- [프로젝트 우클릭] → [Run As] → [Maven build...]를 차례로 선택한다.
- Goals에 package를 입력하고, Run 버튼을 클릭한다.
- console에 BUILD SUCCESS가 표시되고, 프로젝트 폴더 안 target 폴더에는 war 파일이 생성되어 있다.
이 war 파일을 tomcat에 배포한다.
'프로그래밍 > Spring Boot' 카테고리의 다른 글
Spring Boot로 REST API 구축 2시간 안에 완성하기 (0) | 2021.06.24 |
---|---|
[Spring Boot] REST API response XML로 반환하기 (3) | 2020.10.22 |