[DEV] 기록

[Maven + Tomcat] 메이븐 빌드 후 톰캣에 war 배포하는 방법

구데타마 2022. 6. 2. 04:40

개요

개발한 프로젝트를 dev 환경에서 테스트해보기 위해 EPC에 배포를 진행해야 했습니다.

이에 따라 Maven 빌드를 진행하여 war 파일을 생성하고 EPC 톰캣 내 ROOT.war 파일과 바꿔치기하여 배포를 진행하였고 해당 과정을 간단하게 공유해보겠습니다.

 

Maven Wrapper를 통해 war 파일 생성

 

A. Maven과 Maven Wrapper란?

 

Maven은 Gradle과 같이 build tool 중 하나입니다.

Maven Wrapper는 개발자들이 Maven을 별도의 환경에서 개발할 때 local machine에 별도로 설치를 원하지 않거나 Maven의 특정 버전을 통해 빌드하길 원할 때 사용됩니다ㅣ.

즉, Maven Wrapper를 사용할 경우 특정 버전 혹은 개발 환경에 의존하지 않고 독립적으로 실행이 가능합니다.

 

B. Maven Wrapper 구성하는 방법

 

Maven Wrapper는 아래의 플러그인을 통해 간단하게 설치가 가능합니다.

https://github.com/takari/takari-maven-plugin

 

GitHub - takari/takari-maven-plugin: Maven Plugin to Install the Maven Wrapper

Maven Plugin to Install the Maven Wrapper. Contribute to takari/takari-maven-plugin development by creating an account on GitHub.

github.com

빌드하고 싶은 프로젝트 디렉토리로 이동 후 해당 위치에서 아래의 명령어를 실행하면 사진처럼 .mvn 디렉토리와 mvnw, mvnw.cmd 파일을 생성해줍니다.

mvn -N io.takari:maven:wrapper

여기서 mvnw와 mvnw.cmd는 Maven Wrapper를 실행하기 위한 script 파일입니다.

  • mvnw: mvnw는 Maven 대신 사용되는 실행 가능한 unix shell script
  • mvnw.cmd: mvnw의 Window 배치 버전 shell script

 

.mvn 디렉토리 내에는 wrapper 디렉토리가 생성되며 안에는 MavenWrapperDownloader.java, maven-wrapper.jar, 그리고 maven-wrapper.properties 파일이 존재합니다.

  • MavenWrapperDownloader.java: 해당 파일을 컴파일 및 실행하여 Maven 다운로드 진행
  • maven-wrapper.jar: wrapper shell scripts로부터 maven을 실행하고 다운로드하는 데 사용
  • maven-wrapper.properties: Maven이 존재하지 않는 경우 다운로드하기 위한 URL을 명시하기 위해 사용

정리하자면, 위 세 개의 파일들을 통해 Maven이 설치되어있지 않더라도 특정 버전과 classpath를 가지고 공통된 Maven을 다운로드 및 사용할 수 있습니다.

 

* 저 같은 경우 java 파일은 없었습니다.

 

C. Maven Wrapper 실행하기

 

Maven Wrapper 파일들을 통해 아래와 같이 Maven을 빌드 및 실행할 수 있습니다.

  • Maven/target clean 및 build
    • ./mvnw clean package
  • Maven으로 SpringBoot 백그라운드 실행
    • /mvnw spring-boot:run &
  • mvnw로 설치된 maven 배포 경로
    • ~/.m2/wrapper/dists

 

저는 Maven 빌드를 통해 war 파일을 생성하는 것이 목적이므로 ,/mvnw clean package 명령어를 통해 현재 프로젝트 형상으로 war 파일을 말아서 생성하였고 해당 war 파일은 프로젝트 폴더 내 target 폴더 아래 위치합니다.

 

* war 파일명을 바꾸고 싶을 경우 pom.xml 내 <build> 태그 내 <finalName> 태그를 추가해주시면 됩니다.

https://dkel.tistory.com/101

 

[Maven] 메이븐 빌드 후 최종 war 파일 이름 정하는 방법

스프링 MVC 프로젝트를 로컬 개발 후, 리눅스 서버에 배포해야 하는 상황에서 war 파일 이름에 따라 동일한 이름을 가진 폴더가 생기기 마련이다. ​ 예외적으로 예약어로 설정된 파일 같은 경우

dkel.tistory.com

 

Tomcat에서 배포하는 방법

당연하게도 일단 서버 내 tomcat이 설치된 폴더로 이동해야 합니다.

저 같은 경우 경로가 /opt/tomcat/webapps였으므로 아래의 명령어를 통해 해당 폴더로 이동했습니다.

cd /opt/tomcat/webapps

war 파일을 해당 위치에 넣은 후 tomcat이 재기동되면 자동으로 압축이 풀리면서 배포가 진행이 됩니다.

그리고 tomcat은 별도의 설정이 없을 경우 자동으로 webapps 폴더 내 ROOT 폴더를 root로 실행합니다.

따라서, 저처럼 war 파일을 ROOT라는 이름을 사용하게 되면 별도의 설정을 할 필요가 없습니다.

 

만약, 다른 이름으로 war 파일을 생성했을 경우 아래와 같이 진행해줘야 합니다.

  • webapps 폴더 내 war 파일 위치
  • /opt/tomcat/conf/server.xml을 vi나 vim을 통해 열고
  • <Host> 태그 내부 <Context path="[경로]" docBase="[war 파일명]" reloadable="false"></Context> 추가
    • 해당 설정은 tomcat 서버에서 하나의 가상 경로를 추가하는 설정
    • path="/"로 설정하면 ROOT 폴더 대신 등록한 폴더가 실행

 

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="/" docBase="example"  reloadable="false" > </Context>  
</Host>

 

앞서 말했다시피 war 파일을 덮어 씌운 후에는 톰캣을 재기동시켜줘야 합니다.

/opt/tomcat/bin 폴더로 이동하여 아래 명령어를 입력하면 tomcat이 재기동됩니다.

./shutdown.sh
./startup.sh

혹은

service tomcat restart

 

* 저 같은 경우 FileZilla를 통해 war 파일을 서버로 옮겼습니다.

https://filezilla-project.org/

 

FileZilla - The free FTP solution

Overview Welcome to the homepage of FileZilla®, the free FTP solution. The FileZilla Client not only supports FTP, but also FTP over TLS (FTPS) and SFTP. It is open source software distributed free of charge under the terms of the GNU General Public Licen

filezilla-project.org

 

참고

https://sanghye.tistory.com/34

 

[Spring] Maven Wrapper 설명 및 실행방법

spring 이나 spring boot 로 개발을 진행하신다면 Maven 과 Gradle 과 같은 build tool 을 사용해보신 적이 있으실 겁니다. Maven 이나 Gradle 이 무엇인지는 잘 알고 있지만, Wrapper 는 무엇인지 잘 모르는 경우..

sanghye.tistory.com

https://www.lifencoding.com/web/28?p=1 

 

[Tomcat] Tomcat에 war 배포하는 방법

war 파일은Web Application aRchive의 약자로웹 애플리케이션을 이루는 요소들을 한곳에 모아 배포하는데 사용되는 JAR 파일이다. 흔히들 이클립스를 사용하고 로컬에서 웹 애플리케이션을 실행한다면

www.lifencoding.com

https://oingdaddy.tistory.com/344

 

Tomcat에 WAR 파일 배포해서 기동하기

이클립스를 사용하면 어플리케이션을 WAR로 빌드를 할 필요도, Tomcat에 배포를 할 필요도 없어서 이런 빌드 및 배포에 대한 개념을 잡기 어렵다. 이클립스의 편리함을 잠시 버리고 직접 서버에서

oingdaddy.tistory.com

 

반응형