본문 바로가기
IT/gradle

libs.versions.toml 을 이용한 버전 관리

by 봉즙 2025. 2. 5.

Gradle에서 libs.versions.toml을 이용한 라이브러리 버전 관리

여러 모듈을 관리하다 보면 각각의 라이브러리 버전을 개별적으로 관리하는 것이 번거로울 수 있습니다. 환경 변수를 활용해 설정할 수도 있지만, 실행 환경마다 다르게 설정될 위험이 존재합니다.

이런 문제를 해결하기 위해 Gradle에서 제공하는 libs.versions.toml 파일을 활용하면 프로젝트 전반에서 일관된 버전 관리를 할 수 있습니다. 이번 글에서는 libs.versions.toml을 이용해 라이브러리 버전을 중앙에서 관리하는 방법을 소개합니다.

libs.versions.toml이란?

libs.versions.toml 파일은 프로젝트에서 사용될 라이브러리와 플러그인의 버전을 한 곳에서 관리할 수 있도록 도와줍니다. 이 파일을 설정하면 모든 모듈에서 동일한 버전의 라이브러리를 사용할 수 있으며, 버전 업데이트도 간편해집니다.

libs.versions.toml 구성 요소

1. versions

라이브러리나 플러그인의 버전을 정의하는 섹션입니다.

[versions]
springBoot = "3.4.2"
rsa = "1.1.5"

settings.gradle.ktsbuild.gradle.kts에서 libs.versions.springBoot.get()과 같은 방식으로 불러올 수 있습니다.

2. plugins

Gradle 플러그인을 설정하는 섹션입니다.

[plugins]
springBoot = { id = "org.springframework.boot", version.ref = "springBoot" }

 

Gradle에서 사용할 때는 다음과 같이 정의할 수 있습니다

plugins {
    alias(libs.plugins.springBoot)
}

 

3. libraries

라이브러리 의존성을 정의하는 섹션입니다.

[libraries]
spring-security-rsa = { module = "org.springframework.security:spring-security-rsa", version.ref = "rsa" }

이렇게 설정하면 spring-security-rsa 라이브러리를 추가하고, 해당 라이브러리의 버전은 versions 섹션에서 정의한 rsa 버전을 따르게 됩니다.

Gradle에서 사용할 때는 다음과 같이 정의할 수 있습니다

dependencies {
    implementation(libs.spring.security.rsa)
}

libs.versions.toml 적용하기

1-1. Git 서브모듈 추가

레파지토리를 생성하고 libs.versions.toml 을 생성한 다음

아래와 같은 내용을 추가합니다.

# libs.versions.toml 
[versions]
springBoot = "3.4.2"
dependencyManagement = "1.1.7"
kotlinKapt = "2.1.0"
kotlinJvm = "1.9.25"
kotlinSpring = "2.1.0"
java = "21"
rsa = "1.1.5"

[plugins]
springBoot = { id = "org.springframework.boot", version.ref = "springBoot" }
dependencyManagement = { id = "io.spring.dependency-management", version.ref = "dependencyManagement" }
kotlinKapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlinKapt" }
kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlinJvm" }
kotlinSpring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlinSpring" }

[libraries]
spring-security-rsa = { module = "org.springframework.security:spring-security-rsa", version.ref = "rsa" }

이후 Gradle 설정을 위한 서브모듈을 추가하려면 다음 명령어를 실행합니다

git submodule add https://github.com/hanbong5938/gradle-config.git gradle/libs
git submodule update --init --recursive

1-2. 직접 생성하는 경우

gradle/libs/libs.versions.toml 와 같은 위치에 생성 후

1-1의 libs.versions.toml 내용을 추가합니다.

2. settings.gradle.kts 설정

서브모듈에서 제공하는 libs.versions.toml 파일을 사용하도록 settings.gradle.kts에 다음 내용을 추가합니다

dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
            from(files("gradle/libs/libs.versions.toml"))
        }
    }
}

3. 사용 예시

3.1 플러그인 적용

plugins {
    id("org.springframework.boot") version libs.versions.springBoot.get()
}

혹은

plugins {
    alias(libs.plugins.springBoot)
}

 

3.2 Java 버전 설정

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(libs.versions.java.get().toInt())
    }
}

3.3 의존성 추가

dependencies {
    implementation("org.springframework.security:spring-security-rsa") {
        version { strictly(libs.versions.rsa.get()) }
    }
}

혹은 더 간결하게 다음과 같이 작성할 수도 있습니다

dependencies {
   implementation(libs.spring.security.rsa)
}

이제 libs.versions.toml을 활용하여 프로젝트 전반에서 일관된 의존성 버전 관리를 할 수 있습니다.


https://github.com/hanbong5938/gradle-config

 



참고

https://medium.com/@kyawlinnthantkyawlinnthant/make-your-gradle-dependencies-management-better-version-catalogs-part-3-54f434500722

'IT > gradle' 카테고리의 다른 글

2023-02-09-GradleMultiModule  (0) 2023.02.27

댓글