본문 바로가기

프로그래밍/Spring Boot

Spring Boot 배포하기(스프링부트 프로젝트 jar / war 파일로 빌드)


 

Spring Boot(스프링부트)를 이용하여 구축한 프로젝트를 jar 또는 war 파일로 배포할 수 있다.

스프링부트 애플리케이션을 개발해 보았다면, 기본적으로 톰캣 서버가 내장되어 있는 것을 알 수 있다.

이를 그대로 가져다 서버를 내장하여 배포할 것이라면 jar 파일로, 

WAS(tomcat 등) 환경이 이미 존재하여 스프링부트 애플리케이션만을 배포할 것이라면 war 파일로 배포할 수 있다.

 


* 이 글은 <2시간 안에 REST API 핵심 구축하는 방법> 전자책의 일부 내용입니다.

Spring Boot REST API에 관한 보다 자세한 내용이 필요하시다면 다음 링크에서 확인하실 수 있습니다.

 

https://kmong.com/gig/306406

 

REST API 구축 참고서 PDF 드립니다. | 10000원부터 시작 가능한 총 평점 0점의 취업·투잡, 전자책·노

3개 총 작업 개수 완료한 총 평점 0점인 블로비니의 취업·투잡, 전자책·노하우, 직무 스킬업 서비스를 0개의 리뷰와 함께 확인해 보세요. 취업·투잡, 전자책·노하우, 직무 스킬업 제공 등 10000원

kmong.com


※개발환경

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파일이 생성되어 있다.

Console의 BUILD SUCCESS 메시지를 확인
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에 배포한다.