백엔드 공부 메모/Gradle

build.gradle 스크립트

볼륨조절불가 2024. 3. 18. 18:45
728x90

 

 

* 스크립트 내용은 코틀린이 아닌, 그루비로 작성합니다.


build.gradle

빌드 과정에서 프로젝트에 존재하는 build.gradle 스크립트를 실행하여 프로젝트에 필요한 설정을 적용한다.

 

이때 프로젝트에 필요한 설정이란, 소스 코드에서 쓰이는 라이브러리의 종류를 정의하고, 어떤 방법으로 라이브러리를 가져올 것인지를 말한다.

 

이번 글에서는 build.gradle 스크립트를 설정하기 위해 알아야 하는 것들에 대해 가볍게 다뤄보고자 한다.

 

 


 

 

플러그인

플러그인은 태스크를 묶어서 관리하는 단위이며, 특정 작업들과 관련된 태스크의 집합이다.

 

플러그인을 통해 빌드 기능을 확장하거나 특정 기능을 그레이들에 추가할 수 있다.

 

build.gradle에 플러그인 정보를 추가하면 CLI를 통해 플러그인 안에 존재하는 태스크를 실행할 수 있다.


plugins

plugins 블록에 플러그인 정보를 정의하여 그레이들에서 사용할 플러그인을 추가할 수 있다.

plugins {
    // core plugin - 그레이들 자체 제공
    id 'java'
    
    // community plugin - 그레이들 플러그인 포털에 존재
    id 'org.springframework.boot' version '3.2.3'
}

 

build.gradle에 위와 같이 작성하면, Configuration 과정에서 plugins 메소드를 실행하면서 자바, 스프링부트 플러그인을 적용하게 된다.

 

자바 플러그인을 추가하여 compileJava(자바 소스 코드 컴파일), test(테스트 코드 실행), build(빌드) 등의 태스크를, 스프링부트 플러그인을 추가하여 bootRun 태스크를 이용할 수 있다.

 

참고로 스크립트에서 가장 위에 있어야 하는 블록이다.

 

 


 

 

repository

프로젝트의 소스 코드를 작성하는 데 특정 라이브러리가 필요할 때가 있다.

 

이때 라이브러리가 존재하는 저장소에서 라이브러리를 다운받아야 하는데, 저장소의 위치를 repository 블록을 통해 정의한다.

 

repositories 블록의 내용을 정의하면 라이브러리뿐만 아니라 플러그인, 그레이들에 필요한 요소 또한 어디서 탐색할지 정의할 수 있다.

repositories {
    mavenCentral() // 메이븐 중앙 저장소에서 라이브러리를 찾겠다는 뜻
}

 

빌드 과정에서 repository 메소드가 실행되면 라이브러리 등을 다운받기 전 메이븐 중앙 저장소로부터 라이브러리를 탐색한다.

 

 


 

 

dependencies

repositories 블록을 채웠다면 어느 라이브러리가 프로젝트에 필요한지, 즉 프로젝트 의존성을 정의해야 한다.

 

스크립트에 dependencies 블록을 정의하면 라이브러리를 repositories에서 정의한 저장소로부터 다운받을 수 있다.

 

프로젝트에 필요한 라이브러리를 지정하기 위해서는 아래와 같이 작성하면 된다.

dependencies {
    // configuration명 '패키지명:아티팩트명:버전명(생략시 최신 버전 적용)'
    
    // 스프링부트 웹개발 관련 라이브러리, Junit 라이브러리를 프로젝트의 의존성으로 추가
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1'
}

 

dependencies 블록에서 어느 라이브러리를 어느 시점에 적용할 것인지를(scope) 정하는 것이 Configuration이다.

 

주로 사용되는 Configuration중 하나인 implementation은 라이브러리를 컴파일, 런타임에 적용하며, testImplementation은 테스트 코드 컴파일 및 런타임에 적용한다.

 

그 외에도 compileOnly, runtimeOnly 등 많은 옵션들이 존재하니 필요할 때 검색해서 사용하면 될 것 같다.

dependencies 블록에서 사용될 수 있는 Configuration이 추가될 수 있다.
예를 들어 java 플러그인을 적용하면 implementation 등을 사용할 수 있으며, 설명하지는 않았지만 configurations 블록을 이용하면 스크립트에서 이용할 Configuration을 직접 추가할 수 있다.
관련 내용은 아래 링크를 참고하면 될 것 같다.

https://docs.gradle.org/current/userguide/declaring_dependencies.html
728x90