본문 바로가기
Gradle

[개발자의 Gradle] 변수를 사용하는 여러가지 방법

by 개발자의 2025. 7. 30.

Gradle에 변수를 선언하는 방법이 여러 가지 있다.

  • gradle.properties - 전역 변수 설정
  • settings.gradle.kts - 빌드 구성용 변수 설정
  • build.gradle.kts (root) - 하위 모듈에 전달할 변수 설정
  • build.gradle.kts (sub) - 로컬 변수 설정

1) 전역변수 설정 (gradle.properties)

javaVersion=21
jacksonVersion=2.19.0
junitVersion=5.13.3

위처럼 써두면 전체 빌드과정에서 가져다 쓸 수 있다.

그리고 이 변수는 Gradle Project Property(-P)로 덮어쓸 수 있다.

ex>./gradlew build -PjavaVersion=17

 

settings.gradle.kts

val springBootVersion: String by settings

 

build.gradle.kts(root, sub)

// 직접 쓰거나
java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(${project.property("javaVersion")}))
    }
}

// 변수로 쓰거나
val javaVersion: String by project

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(javaVersion))
    }
}

2) 빌드 구성용 변수 설정 (settings.gradle.kts)

val springBootPluginVersion = "3.5.0"

pluginManagement {
    plugins {
        id("org.springframework.boot") version springBootPluginVersion
    }

    repositories {
        gradlePluginPortal()
        mavenCentral()
    }
}

rootProject.name = "my-service"
include("api", "core", "batch")

모든 모듈에서 사용할 플러그인의 버전을 한 번에 관리.

프로젝트의 이름, 구조를 설정하는 데 사용

빌드 설정 초기화 단계인 settings.gradle.kts안에서만 사용하는 경우가 일반적.

build.gradle.kts에서 직접 접근할 수 없다.

 

하지만, 아래와 같이 settings.gradle.kts에 설정할 경우 build.gradle.kts에서 접근 가능.

gradle.rootProject {
    extra["key1"] = "value1"
    extra["key2"] = "value2"
}

위처럼 설정할 경우 아래처럼 가져다 씀.

val value1 = rootProject.extra["key1"] as String
val value2 = rootProject.extra["key2"] as String

이는 Gradle 확장 속성(ExtraPropertiesExtension)에 값을 넣어서 넘겨주는 방식.

 

주의해야 할 점은 extra는 동적 속성이기 때문에, 자동완성 기능이 없고, 런타임 오류 가능성이 존재한다.

특별한 이유가 없다면, gradle.properties를 활용하는 편이 일반적이다.

3) 하위 모듈에 전달할 변수 설정 - build.gradle.kts (root)

val exampleVersion = "3.5.15"

subprojects {
    dependencies {
        implementation("com.example:example:$exampleVersion")
    }
}

멀티 모듈 환경에서 하위 모듈 공통으로 사용할 버전이 있다면 사용할 수 있다.

이 또한, gradle.properties를 활용하는 편이 일반적이다.

4) 로컬 변수 설정 - build.gradle.kts (sub)

val localVersion = "1.2.3"

dependencies {
    implementation("com.example:feature:$localVersion")
}

멀티 모듈 환경에서 특정 모듈에서만 사용해야 하는 고립된 버전이나 옵션이 있다면 사용.