War 파일로 빌드 및 배포
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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>Sts01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test</name>
<packaging>war</packaging> <!-- 이곳! -->
<description>Demo project for Spring Boot</description>
... 생략
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. Sts02Application.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 Sts02Application extends SpringBootServletInitializer{
// 이 부분 추가
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Sts02Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Sts02Application.class, args);
}
}
4. War 파일 생성
- [프로젝트 우클릭] → [Run As] → [Maven build...]를 차례로 선택한다.
- Goals에 package를 입력하고, Profiles에 pom.xml을 지워주고, Run 버튼을 클릭한다.
- console에 BUILD SUCCESS가 표시되고, 프로젝트 폴더 안 target 폴더에는 war 파일이 생성되어 있다.
이 war 파일을 tomcat에 배포한다.
<===== 상황에 따라 수정 하는 과정 ======>
war 파일 추가
1) /var/lib/tomcat9/conf$ 위치에서 server.xml 수정을 위해 명령어 입력
sudo vi server.xml
2) vim editor에서 <Context> 코드 추가 (docBase 안은 자신의 war 파일 이름)
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="Sts02-0.0.1-SNAPSHOT" path="/" reloadable="false"/> // 이곳!
<중략...>
</Host>
'intellij +springboot' 카테고리의 다른 글
[Java] POI 라이브러리로 데이터 엑셀 다운받기 + 셀 병합 (0) | 2024.09.11 |
---|---|
스프링 2.X -> 3.X 로 변경시 스프링 시큐리티(Spring Security) 설정 변경 (0) | 2023.11.28 |
[intelliJ]인텔리제이에서 이클립스 프로젝트 import하기 (2) | 2023.10.24 |
[intellij] 그래들 스프링부트 프로젝트 스프링 시큐리티(Spring Security) 로그인 해보기(gradle + springboot) - 5 (2) | 2022.10.07 |
[intellij] 그래들 스프링부트 프로젝트 화면으로 데이터 가져오기(gradle + springboot) - 4 (1) | 2022.10.05 |