Back-End/Spring Boot

[Spring Boot] refreshVersions로 gradle 설정하기

러러 2025. 3. 26. 20:52
멀티 모듈 프로젝트를 생성할 때, buildSrc를 활용한 Gradle 파일 모듈화는 거의 필수적이다.
이 과정에서 더욱 편리한 관리가 가능하도록 refreshVersions을 활용한 Gradle 파일 모듈화 및 버전 관리를 적용해보자.

 

plugins {
    // See https://jmfayard.github.io/refreshVersions
    id 'de.fayard.refreshVersions' version '0.60.5'
}

먼저 settings.gradle에서  rootProject.name 위에 refreshVersions 사용을 위한 plugins를 추가하자.

더 자세한 내용을 보고 싶으면 해당 링크를 참조하면 된다.

 

추가를 하고 gradle 새로고침을 한 후 조금만 기다려보면

versions.properties 파일이 새롭게 생긴다.

의존성들의 버전을 중앙 관리 하기 위해 생긴 파일로 앞으로 해당 프로젝트에서 사용하는 의존성들의 버전들은 versions.properties에 적혀있는 버전을 참조 해서 적용이 된다.

물론 지금은 아무런 설정도 하지 않아서 해당 파일에는 아무것도 적혀있지 않다.

 

그럼 이제 원활한 사용을 위해 멀티 모듈을 위한 gradle설정을 해보자.

 

※ 루트 디렉토리에 존재하는 src/ 와 build.gradle, HELP.md, git관련 등은 필요 없으니 주석 처리나 삭제를 하자.

buildSrc Setting

처음에 말을 했듯이 buildSrc를 디렉토리를 사용해서 버전을 관리할 것이다.

그러므로 먼저 buildSrc디렉토리를 만들어보자. 그런 다음 build.gradle, settings.gradle을 추가하자.

추가를 완료 했으면 buildSrc에서도 똑같이 refreshVersions를 사용 해야하기 때문에 buildSrc의 settings.gradle에 아래와 같이 추가하자.

// buildSrc/settings.gradle
pluginManagement {
    repositories {
        gradlePluginPortal()
    }
    plugins {
        id 'de.fayard.refreshVersions' version '0.60.5'
    }
}

plugins {
    id 'de.fayard.refreshVersions'
}

 

 

그런 다음 buildSrc의 build.gradle에 사용할 plugins의 의존성을 추가해준다.

 

refreshVersions는 plugins의 버전 정보를 참조할 수 없기에 따로 buildSrc의 build.gradle에 의존성으로 추가를 해 주어야 한다.

마지막에 _가 refreshVersions에서 관리해야할 버전 이라는 것을 명시해주는 것이다.

// buildSrc/build.gradle
plugins {
    id 'groovy-gradle-plugin'
}
dependencies {
    implementation("org.springframework.boot:spring-boot-gradle-plugin:_")
    implementation("io.spring.gradle:dependency-management-plugin:_")
}
id 'groovy-gradle-plugin'

 해당 plugin이 존재 해야 앞으로 gradle 파일을 참조할 때 문제 없이 참조할 수 있다.

 

 

그리고 추가된 두 개의 의존성들은

plugins {
    id 'org.springframework.boot' version '3.4.4'
    id 'io.spring.dependency-management' version '1.1.7'
}

평소에 gradle에 작성하던 plugins의 id 정보들이다. 

근데 평소에 plugins의 id로 작성것을 의존성으로 바꿔서 작성 하려고 하면 막막하다. 다행히도 위 plugins 정보들은 

 

https://plugins.gradle.org/

 

Gradle - Plugins

 

plugins.gradle.org

위 사이트에서 찾고자 하는 plugins를 검색한 후

하단의 legacy 토글을 열고 classpath에 있는 내용에 버전 정보를 _로 바꿔서 가져오면 된다.

 

현재까지의 모든 설정을 완료하고 gradle을 새로고침 한 후에 versions.properties를 확인해보자.

해당 블로그를 작성하는 시점 최신 버전으로 버전 정보들이 입력 되어있다.


gradle 모듈화

현재까지 이상 없었으면 위와 같은 상태일 것이다.

 

이제 멀티 모듈에서 사용할 gradle 파일을 작성해보자. gradle 설정이 되어있기 때문에 디렉토리 생성을 하려고 하면

생성할 디렉토리를 고를 수 있다. 여기서 src/main/groovy를 선택하자.

 

그러고 간단하게 java와 lombok을 사용할 수 있는 gradle파일을 작성하자. 파일 이름은 custom.java-conventions.gradle로 작성했다.

 

보이는 것 처럼 자바와 lombok만 추가했다.

 

그러고 멀티 모듈 디렉토리를 생성 한 후에 build.gradle을 추가해보자. 그러면 아래와 같은 구조가 될 것이다.

위와 같은 구조가 되었다면 이제 추가한 모듈의 build.gradle 파일에 buildSrc에 생성한 custom.java-conventions.gradle

파일을 .gradle을 생략 하고 plugins의 id로 추가해보자.

그런 다음 gradle을 새로고침하고 자바 파일을 생성해보자.

gradle 설정이 잘 되어서

디렉토리 구조도 잘 잡히고

lombok을 사용한 코드도 잘 동작한다.

 

이제 스프링을 사용하기 위한 간단한 설정을 해보자.

buildSrc에 새로운 custom.spring-conventions.gradle 파일을 만들자. 

추가한 gradle 파일을 생성한 멀티 모듈에 추가해주자.

그런다음 간단한 api 하나 생성한 후 테스트를 해보자.

@RestController
@RequestMapping("/api")
public class HelloController {

  @GetMapping("/hello")
  public String hello() {
    return "Hello World!";
  }

}

문제 없이 잘 동작한다.