원문

소개

스프링 부트 그레들 플러그인은 그레들에서 스프링 부트를 지원하고, 실행가능한 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 태스크는 비활성화 된다.

Posted by 닮은

블로그 이미지
instragram @commonsigmchi
닮은

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.2
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함