Spring Boot은 Gradle 빌드 툴을 이용해 애플리케이션을 빌드할 수 있는 플러그인을 지원하기 때문에 Gradle task 명령을 통해 애플리케이션을 손쉽게 빌드 할 수 있다.
:bootJar
또는 :build
task를 더블 클릭한다.빌드가 정상적으로 종료되면 build.libs
디렉토리에 Jar 파일이 생성된다.
:build
vs:bootJar
:build
태스크를 실행하면:assemble
,:check
같이 Gradle에서 빌드와 관련된 모든 task들을 실행시킨다. 그리고 실행 가능한 Jar 파일 이외에 plain Jar 파일 하나를 더 생성한다.
ᅠ
:bootJar
은 애플리케이션의 실행 가능한 Jar(Executable Jar)파일을 생성하기 위한 task만 실행한다.
단순히 Executable Jar 파일만 필요하다면 :bootJar task를 실행하면 된다.
IDE가 설치되어 있지 않은 상황에서 빌드를 해야될 경우도 생길 수 있다. 이럴땐 Gardle task 명령어를 콘솔에서 바로 입력해서 빌드를 진행할 수 있다.
💡 Windows 기준
PS D:\sample\project\application-build> .\gradlew bootJar
MINGW64 /d/sample\project\application-build (main)
$ ./gradlew build
빌드가 정상적으로 종료되면 IDE에서 빌드를 진행 할 때와 마찬가지로 build.libs
디렉토리에 Jar 파일 하나가 생성된다.
빌드가 완료되었다면 생성된 Jar(Executable Jar) 파일을 이용해서 애플리케이션을 실행할 수 있다.
java -jar Jar 파일명.jar
Spring Boot 기반의 Executable Jar 파일을 서버에 배포하는 가장 일반적인 방법은 scp나 sftp 같은 표준 유닉스 툴을 이용하여 서버로 간단히 전송하는 것이다.
서버로 전송된 Jar 파일은 JVM이 설치된 환경이라면 손쉽게 실행할 수 있다.
Executable Jar 파일은 특히 클라우드 환경에 손쉽게 배포할 수 있다.
PaaS(Platform as a Service)
Cloud Foundry, Heroku
대표적인 PaaS 제공 기업인 Cloud Foundry에서 제공하는 cf command line 툴을 사용하면 Executable Jar 파일을 손쉽게 배포할 수 있다.
cf push acloudyspringtime -p target/app-0.0.1-SNAPSHOT.jar
IaaS(Infrastructure as a Service)
Executable Jar는 AWS Elastic Beanstalk, AWS Container Registry, AWS Code Deploy 같은 서비스를 이용하면 손쉽게 배포가 가능하다.
Microsoft의 클라우드 서비스인 Azure도 Azure Spring Cloud, Azure App Service 에서 Spring Boot 기반의 Executable Jar 파일 배포 기능을 제공한다.
Google Cloud 또한 Executable Jar 파일 배포를 위한 여러가지 옵션을 제공하고 있다.
Spring Boot 기반 애플리케이션을 가장 손쉽게 빌드할 수 있는 방법은 IntelliJ 같은 IDE의 기능을 활용하는 것이다.
IDE 등의 기능을 활용하기 어려운 상황에서는 Gradle 명령어를 사용해 손쉽게 빌드할 수 있다.
Spring에서는 프로파일 기능을 이용해서 빌드 후 생성되는 애플리케이션 실행 파일에 대한 실행 환경을 손쉽게 지정할 수 있다.
Spring Boot 기반의 Executable Jar 파일은 전통적인 서버, 클라우드 환경, 가상화 환경에 손쉽게 배포할 수 있다.