refreshVersions로 의존성 버전 관리 효율적으로 하기

Noul·2025년 1월 10일

refreshVersions


gradle refreshVersions

의존성 버전 관리는 소프트웨어 개발에서 중요한 부분 중 하나입니다.

프로젝트를 진행하다보면 수많은 라이브러리 의존성을 추가하면서 버전 충돌이 발생하거나, 최신 버전 관리가 어려워질 수 있습니다.

따라서 의존성을 체계적으로 관리하지 않으면 프로젝트가 커짐에 따라 프로젝트의 확장성과 유지보수성이 떨어질 수 있습니다.

이러한 문제를 해소하는 데 도움이 될 플러그인을 찾게 되어 소개해 드리려고 합니다.

refreshVersions는 중앙 집중식 버전 관리 시스템을 제공하여, 멀티 모듈에서도 동일한 의존성을 유지할 수 있게 도와줍니다.

또한, 모든 라이브러리의 최신 버전을 쉽게 추적하고 업데이트할 수 있어 편리하게 버전을 관리할 수 있습니다.

위 플러그인의 소개 글에서는 다음과 같이 말합니다.

We firmly believe that yes, we can have the benefits of modularization without the hell of dependency management.



사용법

그럼 간단하게 사용법을 작성해보겠습니다.

우선 settings.gradle.kts 파일에 refreshVersions 플러그인을 추가해줍니다.

rootProject.name = "demo"

plugins {
    id("de.fayard.refreshVersions") version "0.60.5"
}
  • 글을 작성하는 시점의 최신 버전인 0.60.5 적용했습니다.
  • settings.gradle 파일 적용 방법은 여기를 확인해 주세요.

플러그인을 추가한 뒤 sync를 돌리게 되면 versions.properties 파일이 생긴 것을 확인할 수 있습니다.

이제 versions.properties 파일에서 버전 정보를 관리하게 됩니다. 이 파일에서 의존성 버전을 쉽게 업데이트할 수 있습니다.


다음으로 build.gradle.kts 파일에 의존성을 추가해 보겠습니다.

dependencies {
	implementation("com.querydsl:querydsl-jpa:_")
}

querydsl-jpa:_
버전을 작성하는 부분에 _가 들어간 부분을 볼 수 있습니다.

해당 부분에 _을 넣게 되면 자동으로 최신 버전이 적용됩니다.

여기서 sync gradle을 하면 versions.properties에 적용된 버전이 새로 생긴 것을 확인할 수 있습니다.

maven repository에서 확인해보니 최신 버전으로 잘 들어가 있네요.

그럼 이전 버전을 적용하려면 어떻게 해야 할까요 ??

바로 versions.properties에 작성된 버전을 수정한 뒤 gradle에서 아래 이미지 경로의 refreshVersions를 돌려주면 됩니다.

저는 4.4.0 버전을 넣어보겠습니다.

최신 이전 버전을 적용하게 되면 위 이미지처럼 이후의 버전까지 주석으로 달리게 됩니다.
따라서 최신 버전들을 쉽게 파악할 수 있습니다.



추가

dependencies {
	implementation(Spring.boot.web)
//	implementation("org.springframework.boot:spring-boot-starter-web")
	testImplementation(Kotlin.test.junit5)
//	testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
}

위 예시에서 Spring.boot.web"org.springframework.boot:spring-boot-starter-web"은 동일한 의존성을 가리킵니다.

이 방식은 모든 의존성을 커버하지는 않지만, 의존성 관리가 더 직관적이고 간편해진다는 장점이 있습니다.

참고로 Spring.boot.web 같은 의존성은 아래의 GitHub repository에서 확인할 수 있습니다:

refreshVersions: dependencies GitHub



참고

https://splitties.github.io/refreshVersions
https://github.com/Splitties/refreshVersions
https://mvnrepository.com

profile
고민하고 트레이드오프

0개의 댓글