본문 바로가기

프로젝트/springboot - aws

Gradle apply plugin과 plugins

스프링 부트와 AWS로 혼자 구현하는 웹서비스 (프리렉, 이동욱 지음)

위 책과 정리한 블로그를 참조하여 스프링부트 AWS 웹서비스를 구현해본 기록

 

IntelliJ도 처음 gradle 프로젝트도 다 처음인데 참조한 것과는 달리 gradle6.1 버전(최신버전으로 해본다..)을 사용하여 다른 설정이 있어 기록함

기본적으로 IntelliJ IDAE(2020.1.1) SDK의 JDK를 다운받으면 JDK14가 다운 되는데 일단 익숙한 JDK8을 사용했다ㅎㅎ

 

그레이들에서 멀티 모듈을 Root project에 위치한 빌드스크립트에서 정의하는 것을 ‘Cross project configuration'라고 한다.

예제에서 플러그인 설정을 할 때 빌드스크립트(build.gradle 파일) 내에 buildscript를 정의하는데 내 파일에는 plugins 방식으로 되어있어 찾아봤는데 개선되었다고 한다.

 

기존
buildscript {
    ext {
        springBootVersion = '2.1.7.RELEASE'
    }

    repositories {
        mavenCentral()
        jcenter()
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

 

개선
plugins {
    id 'java'
    id 'eclipse'
    id 'org.springframework.boot' version '2.1.7.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
}

buildscript 와 apply plugin 부분을 plugins 블럭으로 간단하게 적용할 수 있다. (기존 것도 사용 가능)

 

왜냐? 공식 페이지에서 자세히 볼 수 있지만

  • Promotes reuse and reduces the overhead of maintaining similar logic across multiple projects

  • Allows a higher degree of modularization, enhancing comprehensibility and organization

  • Encapsulates imperative logic and allows build scripts to be as declarative as possible

라는데 그밖에 찾아본 바로 대략 정리하면 정확한 파라미터와 버전을 사용해서 적용시기를 세밀하게 제어하여 최적화를 돕는다고 한다.

기본적으로 프로젝트 전체에 적용이고 일부 서브 프로젝트에만 적용하기 위해서 apply false를 선언해 제어하고 사용시 apply plugin으로 명시해 주면 된다.

plugins {
    id 'com.example.hello' version '1.0.0' apply false
    id 'com.example.goodbye' version '1.0.0' apply false
}

subprojects {
    if (name.startsWith('hello')) {
        apply plugin: 'com.example.hello'
    }
}

 

 

 

-

그밖에 참고

1. Gradle DSL

2. Gradle 멀티 프로젝트 관리

3. Gradle 빌드자동화

 

 

 

'프로젝트 > springboot - aws' 카테고리의 다른 글

JPA(Java Persistence API)와 Spring Data JPA  (0) 2020.05.14