[gradle] Gradle이란

그동안 Spring boot로 프로젝트를 만들면서 사용을 해왔지만, Gradle에 대해 공부를 한적은 없었다.

결국 Multi Module을 만드는 과정에서 많은 어려움을 겪고 있어 기본적인 Gradle을 알아보자.

Gradle

Ant나 Maven같은 기존 빌드 도구의 단점을 보완한, Groovy를 기반 오픈소스 빌드 도구이다.

Groovy도 공부해야 하나..?

Gradle의 특징

의존성 관리를 위해 다양한 방법을 제공하고 빌드 스크립트를 JVM에서 동작하는 Groovy 기반의 DSL(Domain Specific Language)를 사용한다.

Graddle wrapper를 사용하면 Gradle이 설치되지 않은 시스템에서도 프로젝트를 빌드할 수 잇다.

Gradle wrapper

시스템에 Java나 Gradle이 설치되어 있지 않아도 Gradle tasks를 실행할 수 있는 sciprt, jar 및 등록 정보 파일이다.

wrapper를 사용하면 새로운 환경에 설치할때 별도의 설치나 설정과정 없이 빌드 할 수 있어 wrapper 사용을 권장한다.

build.gradle

의존성, 플러그인 설정같은 빌드에 필요한 설정을 위한 빌드 구성 스크립트

Spring boot 앱을 만들면 다음과 같은 build.gradle파일이 생성된다.

plugins {
    id 'org.springframework.boot' version '2.4.4'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.zkdlu'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

하나하나 알아보자.

plugin 설정

  plugins {
      id 'org.springframework.boot' version '2.4.4'
      id 'io.spring.dependency-management' version '1.0.11.RELEASE'
      id 'java'
  }

프로젝트 정보

group = 'com.zkdlu'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repository 설정

repositories {
    mavenCentral()
}

gradle은 maven repository, JCenter repository 등 다양한 repository를 제공한다

의존관계 설정

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Gradle은 의존성 관리를 위해 여러 구성을 제공한다.

테스트

test {
    useJUnitPlatform()
}

Junit5를 사용하기 위한 태스크, Gradle은 Test시 특정 테스트만 진행할 수 있다.