본문 바로가기
프로그램/안드로이드(코틀린)

build.gradle plugins 와 apply plugin 차이

by cbwstar 2022. 5. 31.
728x90
반응형

그레이들에서 멀티 모듈을 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'
    }
}

 

 

728x90
반응형

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading