Spring boot를 사용해 웹 서버를 개발할 때, 일반적으로 로컬 개발환경에서는 이클립스 등의 IDE상에서 서버를 구동해서 테스트한다.
또한 실제 현업에서의 배포는 jenkins와 같은 CI 툴을 사용한다.
그래서인지 의외로 maven 환경에서 tomcat이 내장된 spring boot 프로젝트를 jar 파일로 바로 배포하는 방법에 대해 물어보는 사람들이 많다.
처음 할 경우 삽질할만한 요소가 있어서 시간을 잡아먹을 수 있지만, 생각보다 매우 쉽고 간단한 작업이다.
1. pom.xml 셋팅
STS와 같은 IDE를 사용해 처음 Spring boot 웹 프로젝트를 생성했다면, packaging이 war로 되어있는 경우가 많을 것이다.
우리는 jar로 배포할 것이기 때문에 jar로 바꿔준다.
(war는 내장 톰캣을 사용하지 않고, 별도로 톰캣을 설치한 뒤 웹 서버를 기동할 때 사용한다.)
maven을 통해 빌드를 하면 jar 파일 이름은 artifactId-version.jar 로 생성될 것이다. 적당히 수정해 주자.
혹시 dependency 중 spring-boot-starter-tomcat이 없다면 추가해 주고, scope를 provided로 설정해 준다.
2. Maven Build
우리는 maven build 기능을 사용해 해당 프로젝트를 배포할 것이다.
프로젝트를 오른쪽 버튼 클릭한 후, Run As -> Maven build를 선택하자.
처음 Maven build를 실행했다면 아래와 같은 화면이 나올 것이다. 이 화면은 run configuration 메뉴에서도 열 수 있다.
build를 하는 목적은 프로젝트를 package하는 것이다. Goals에 package라고 써 주자.
Profiles에 pom.xml이라고 입력되어 있을 텐데, 빌드를 했을 때 'The requested profile "pom.xml" could not be activated because it does not exist.' 라는 오류와 함께 빌드가 실패한다면 이 Profiles란을 지워주자.
Run을 눌러 빌드를 시작하면 콘솔에 빌드 과정이 나오고, 빌드가 완료되면 해당 프로젝트 경로의 target 폴더에 jar 파일이 생성되어 있을 것이다.
(참고) Spring Boot 코드
배포와 관련된 것은 아니지만, 테스트를 위해 간단하게 실행 코드를 작성 했다.
3. jar 파일 테스트
cmd를 실행하고, jar파일이 있는 경로로 이동해서 java 명령어로 jar 파일을 실행해 보자.
java -jar <jar파일명.jar>
윈도우 cmd에서 서버가 정상적으로 올라간 것을 확인할 수 있다.
리눅스에서 실행해도 마찬가지로 잘 동작한다.
이제 브라우저를 열고 테스트 해 보면 정상적으로 잘 실행되는 것을 볼 수 있다.
(8080포트를 쓰고 있기 때문에 임의로 8081로 변경했다. 기본적으로 디폴트는 8080이다.)