1 분 소요

image


War 파일로 빌드 및 배포


Maven


1. pom.xml

  • 프로퍼티 값을 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>

... 생략
    
	<groupId>com.example</groupId>
	<artifactId>id</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>  <!-- 이곳! -->
    
... 생략
	
</project>


2. pom.xml

  • jar와는 다르게 추가적으로 dependency의 추가가 필요하다.
  • 이는 컴파일 단계에서만 tomcat 라이브러리를 이용(scope를 provided로 지정) 하고,
  • 배포 이후에는 내장 tomcat이 아닌 이미 존재하는 tomcat 서버를 이용하기 위함이다.
<dependency>
    <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope> <!-- 안되어 있는 경우 변경! -->
</dependency>


3. Application.java

  • Spring Boot Application 클래스에 소스 추가하기
  • 프로젝트에서 main 메소드가 존재하는, 스프링 부트 앱을 시작하는 역할을 하는 클래스가 있다. (@SpringBootApplication 어노테이션이 지정되어 있음)
  • 이 클래스에 다음과 같이 SpringBootServletInitializer를 상속하고, @Override 메소드를 추가한다. (메소드 내 클래스명은 작업 중인 프로젝트마다 다르다.)
package Pack;

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 Application extends SpringBootServletInitializer {
	
  	// 이 부분 추가
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(Application.class);
	}
	
	public static void main(String[] args) {
		SpringApplication.run(Application .class, args);
	}
}


4. War 파일 생성

  • [프로젝트 우클릭] → [Run As] → [Maven build…]를 차례로 선택한다.
  • Goals에 package를 입력하고, Profiles에 pom.xml을 지워주고, Run 버튼을 클릭한다.


Gradle


1. build.gradle

plugins {
  id 'org.springframework.boot' version '2.4.2.RELEASE'
  id 'io.spring.dependency-management' version '1.0.11.RELEASE'
  id 'java'
  id 'war' // 추가
}

bootWar { // 추가
  archiveBaseName = 'web' // war 패키징 시 이름 설정
  archiveFileName = 'web.war' // war 패키징 시 이름 설정
  archiveVersion = '0.0.0'
}

// 내장 톰캣을 사용하지 않음 (providedRuntime)
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'

2. Application.java

package Pack;

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 Application extends SpringBootServletInitializer {

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

  // 이 부분 추가
  @Override
  protected SpringAppApplicationBuilder configure(SpringApplicationBuilder builder) {
  return builder.sources(Application.class);
  }
}


3. War 파일 생성

image

  • Build 진행 후에 Gradle > build > bootWar 로 War 파일 생성
  • build/libs를 확인하면 설정한 web.war파일이 생긴것을 확인할 수 있음

image

댓글남기기