[spring-boot] 실행가능한 jar/war 파일 만들기

by 스뎅(thDeng) on

spring-boot로 개발을 마치고 실제 서비스를 해야 한다면, jar나 war 파일을 만들어서 배포를 해야 한다. 서비스할 때도 소스 코드를 들고 가서 ./gradlew bootRun 같은 명령을 실행할 수는 없으니..

방법은 간단하다. build task로 빌드하면, build/libs 폴더에 실행 가능한 jar나 war 파일이 생생된다. spring-boot 프로젝트는 모든 라이브러리가 jar/war 파일 안에 포함된다.

$ gradle build
$ java -jar build/libs/myapp-0.0.1-SNAPSHOT.jar

war 파일이 필요하다면?? war 플러그인을 넣어주면 된다.

apply plugin: 'war'

war {
    baseName = 'myapp'
    version = '0.0.1-SNAPSHOT'
}

파일명만 war로 바뀌었을뿐 실행도 jar와 동일하다.

$ gradle build
$ java -jar build/libs/myapp-0.0.1-SNAPSHOT.war

이렇게 실행하면, spring-boot-starter-web에 포함되어 있는 embedded Tomcat 위에서 실행된다. (Tomcat을 Jetty로 바꾸고 싶다면 이전 포스트 참조)

웹서버가 별도로 있어서, embedded Tomcat이나 embedded Jetty가 필요 없는 경우는 아래처럼 dependency에 compile 대신 providedRuntime으로 걸어주면 war 파일이 생성될 때 해당 웹서버 모듈은 제외하고 생성된다.

apply plugin: 'war'

war {
    baseName = 'myapp'
    version = '0.0.1-SNAPSHOT'
}

repositories {
    jcenter()
    maven { url "http://repo.spring.io/libs-snapshot" }
}

dependencies {
    compile "org.springframework.boot:spring-boot-starter-web"
    providedRuntime "org.springframework.boot:spring-boot-starter-tomcat"
}

참고

별도로 명시하지 않을 경우, 이 블로그의 포스트는 다음 라이선스에 따라 사용할 수 있습니다: Creative Commons License CC Attribution-NonCommercial-ShareAlike 4.0 International License