본문 바로가기

카테고리 없음

Using Gradle Plugins - Spring Boot 예제

Spring Boot Project에서 gradle를 사용할때 plugin 추가 방법

 

1. Using the plugins DSL

- Single Project

// build.gradle

plugins {
  id "org.springframework.boot" version "2.2.4.RELEASE"
}

- Multi Project

// settings.gradle

include 'helloA'
include 'helloB'
include 'goodbyeC'

----

// build.gradle

plugins {
    id 'org.gradle.sample.hello' version '1.0.0' apply false
    id 'org.gradle.sample.goodbye' version '1.0.0' apply false
}

subprojects {
    if (name.startsWith('hello')) {
        apply plugin: 'org.gradle.sample.hello'
    }
}

----

goodbyeC/build.gradle

plugins {
    id 'org.gradle.sample.goodbye'  // subprojects 에서는 버전을 명시 할 필요 없다.
}

- Custom Plugin Repositories

// settings.gradle

pluginManagement {
    repositories {
        maven {
            url '../maven-repo'
        }
        gradlePluginPortal()
        ivy {
            url '../ivy-repo'
        }
    }
}

 

2. Using legacy plugin application

// build.gradle

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "org.springframework.boot:spring-boot-gradle-plugin:2.2.4.RELEASE"
  }
}

apply plugin: "org.springframework.boot"

 

3. 기타

DSL 방식의 "plugins { }"에서 version은 변수처리가 안된다.

- DSL

// build.gradle

plugins {
    id 'io.spring.dependency-management' version '1.0.9.RELEASE' apply false
    id 'org.springframework.boot' version '2.2.4.RELEASE' apply false
    id 'org.springframework.cloud.contract' version '2.2.1.RELEASE' apply false
}

ext {
    set('springBootVersion', "2.2.4.RELEASE")
    set('springCloudVersion', "Hoxton.SR1")
    set('springCloudContractVersion', "2.2.1.RELEASE")
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}"
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

- Legacy

// build.gradle

buildscript {
    ext {
        springBootVersion = '2.2.4.RELEASE'
        springCloudVersion = 'Hoxton.SR1'
        springCloudContractVersion = '2.2.1.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath "io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE"
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
        classpath "org.springframework.cloud:spring-cloud-contract-gradle-plugin:${springCloudContractVersion}"
    }
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}"
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

4. 참고

https://docs.gradle.org/current/userguide/plugins.html