Home Multi-Module 변수 관리
Post
Cancel

Multi-Module 변수 관리

스프링 멀티모듈을 학습하며 작성한 글입니다. 학습 과정에서 작성되었기 때문에 잘못된 내용이 있을 수 있으며, 이에 대한 지적이나 피드백은 언제든 환영입니다.

image






1. 변수를 한 곳에서 관리하는 이유


스프링 단일 모듈을 사용할 때는 아래와 같이 build.gradle 파일에서 변수를 관리해도 괜찮습니다. 프로젝트가 복잡하지 않기 때문에 이곳에서 모든 변수를 관리할 수 있기 때문입니다.

1
2
3
4
5
6
7
8
plugins {
    kotlin("jvm") version "${VERSION}"
    kotlin("plugin.spring")
    kotlin("plugin.jpa")

    id("org.springframework.boot") version "${VERSION}"
    id("io.spring.dependency-management")
}









하지만 멀티 모듈을 사용하면 아래와 같이 여러 개의 패키지에서 버전을 각각 관리하기 때문에 관리하기가 힘들어집니다. 관리 포인트가 많아지면 실수하기도 쉬워지겠죠? 이를 어떻게 한 곳에서 관리하는지 알아보겠습니다.

image









2. 적용


한 곳에서 변수를 관리하기 위해서는 gradle.propertiessettings.gradle.kts 설정을 건드려야 합니다.





우선 루트 디렉토리에 gradle.properties 파일을 생성하고 이곳에 공통으로 선언할 변수들을 선언해 줍니다. 이는 gradle 관련 property를 관리해 주는 파일 입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
### Application version ###
applicationVersion=0.0.1

### Project configs ###
projectGroup=with-us

### Project dependency Versions ###
kotlinVersion=1.7.22

### Spring Dependency Versions ###
springBootVersion=3.0.7
springDependencyManagementVersion=1.0.11.RELEASE
springCloudDependenciesVersion=2022.0.2

### Ktlint ###
kotlin.code.style=official









이후 settings.gradle.kts에서 아래와 같이 변수를 선언해 줍니다. 이후 requestid 당 어떤 버전을 사용할지를 적용해서 주면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
rootProject.name = "jm-post"

include(
    "jm-post-domain",
    "jm-post-api",
    "storage",
    "support:logging"
)

pluginManagement {
    val kotlinVersion: String by settings
    val springBootVersion: String by settings
    val springDependencyManagementVersion: String by settings

    resolutionStrategy {
        eachPlugin {
            when (requested.id.id) {
                "org.jetbrains.kotlin.jvm" -> useVersion(kotlinVersion)
                "org.jetbrains.kotlin.plugin.spring" -> useVersion(kotlinVersion)
                "org.springframework.boot" -> useVersion(springBootVersion)
                "io.spring.dependency-management" -> useVersion(springDependencyManagementVersion)
            }
        }
    }
}









이후 아래와 같이 버전을 제거해줍니다.

1
2
3
4
5
6
7
8
9
10
11
plugins {
    kotlin("jvm")
    kotlin("plugin.spring") apply false
    id("org.springframework.boot") apply false
    id("io.spring.dependency-management")

    id("org.jlleitschuh.gradle.ktlint")
    id("org.jlleitschuh.gradle.ktlint-idea")
    id("io.gitlab.arturbosch.detekt")
    jacoco
}









3. 정리


멀티 모듈에서 어떻게 한 곳에서 모든 버전을 관리하는지 살펴보았는데요, 이를 통해 실수를 줄이고 각 모듈을 효율적으로 관리할 수 있었으면 합니다.


This post is licensed under CC BY 4.0 by the author.

Exception

JPA Envers의 사용법과 주의할 점