2018. 5. 3. 17:14 기술 부채 상환 중....
Spring Boot Gradle Plugin Reference Guide
소개
스프링 부트 그레들 플러그인은 그레들에서 스프링 부트를 지원하고, 실행가능한 jar (또는 war 아카이브)를 패키징 하고, 스프링 부트 어플리케이션을 실행하고 spring-boot-dependencies가 제공하는 의존성 관리를 사용할 수 있게 해준다.
시작하기
buildscript {
repositories {
maven { url 'https://repo.spring.io/libs-snapshot' }
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.1.0.BUILD-SNAPSHOT'
}
}
apply plugin: 'org.springframework.boot'
별로 변화가 없는 것 같지만, 이 플러그인은 다른 플러그인이 적용되는지 탐지하고 적절하게 반응한다고 한다. groovy, java, kotlin 플러그인과 io.spring.dependency-management 플러그인은 최소한으로 적용해야 한다. (??)
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
의존성 관리하기
io.spring.dependency-management 플러그인을 적용하면 스프링 부트 플러그인이 자동으로 알맞는 버전의 spring-boot-dependencies bom을 가져온다. 의존성을 가져올 때 버전을 생략해도 된다는 말인 것 같다.
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
}
관리되는 버전 직접 정의하기
해당하는 속성을 설정해주면 된다.
ext['slf4j.version'] = '1.7.20'
고립적으로 부트의 의존성 관리 사용하기
스프링 부트 의존성 관리는 그 프로젝트에 스프링 부트 플러그인을 적용하지 않고도 쓸 수 있다. SpringBootPlugin
클래스는 BOM_COORDINATES
상수를 제공하는데, group id, artifact id, 버전을 알 필요 없이 사용된다.
일단은 설정만 하고, 적용하지 않는다.
buildscript {
repositories {
maven { url 'https://repo.spring.io/libs-snapshot' }
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.1.0.BUILD-SNAPSHOT'
}
}
의존성 관리 플러그인에서의 스프릥 부트 플러그인 의존성이라는 것은, 의존성 선언 없이 의존성 관리 플러그인을 사용할 수 있다는 뜻이다. 이것은 또한, 스프링 부트에서와 같은 의존성 관리 플러그인을 자동으로 사용한다는 의미이다.
의존성 관리 플러그인을 적용하고, 스프링 부트의 bom을 임포트 하자.
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
imports {
mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
}
}
더 자세한 것
의존성 관리 플러그인의 기능에 대한 자세한 내용은 여기를 참조한다.
실행 파일 아카이브로 패키징하기
플러그인은 java -jar
로 실행 가능한 파일 아카이브를 생성해 준다.
jar로 패키징하기
실행가능한 jar는 bootJar
태스크를 통해 빌드 된다. 이 태스크는 java
플러그인이 적용 될 때 생성되며, BootJar
의 인스턴스이다. assemble
태스크는 bootJar
태스크에 따라 자동적으로 설정되기 때문에 assemble
(또는 build
) 태스크가 실행되면 bootJar
태스크도 실행된다.
war로 패키징하기
실행가능한 war는 bootWar
태스크를 통해 빌드 된다. 이 태스크는 war
플러그인이 적용 될 때 생성되며, BootWar
의 인스턴스이다. assemble
태스크는 bootWar
태스크에 따라 자동적으로 설정되기 때문에 assemble
(또는 build
) 태스크가 실행되면 bootWar
태스크도 실행된다.
실행가능하고 배포가능한 war 패키징하기
war 파일은 외부 컨테이너에 배포되고, java -jar
를 사용하여 실행 할 수 있도록 패키지 될 수 있다. 이렇게 하기 위해서는 내장 servlet 컨테이너 의존성이 다음과 같이 providedRuntime
설정이 추가되어야 한다.
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}
이렇게 함으로써, 외부 컨테이너의 원래 클래스와 war 파일의 WEB-INF/lib-provided
디렉토리 간의 충돌이 없다는 것을 보장할 수 있다.
일반 아카이브로 패키징하기
기본적으로 bootJar
또는 bootWar
태스크를 설정할 때, jar
또는 war
태스크는 비활성화 된다.
'기술 부채 상환 중....' 카테고리의 다른 글
Migrating from Maven to Gradle (0) | 2018.05.10 |
---|---|
스프링 부트 3. Using Spring Boot (0) | 2018.05.02 |
스프링 부트 2. Getting Started (0) | 2018.05.02 |
벨로시티에서 프리마커로 갈아타기 (0) | 2018.04.22 |