스프링 이니셜라이저를 통해 직접 프로젝트를 생성하고 build.gradle.kts 파일을 보면 아래와 같이 기본 생성되어 있음
코드 예시
plugins {
id("org.springframework.boot") version "2.6.9"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
kotlin("jvm") version "1.6.21"
kotlin("plugin.spring") version "1.6.21"
}
각 플러그인 별로 버전이 명시되고 중복되는 버전도 확인 가능하므로 아래와 같이 변경할 예정
코드 예시
plugins {
id("org.springframework.boot")
id("io.spring-dependency-management")
kotlin("jvm")
kotlin("plugin.spring")
}
가장 먼저 해야 할 일은 버전을 한 곳에서 관리할 파일을 만드는 것
gradle.properties 파일을 통해 관리하며 key값은 커스텀 가능
코드 예시
applicationVersion=0.0.1
projectGroup=com.chobolevel
kotlinVersion=1.6.21
# Spring dependency versions
springBootVersion=3.0.0
springDependencyManagementVersion=1.0.11.RELEASE
변수이름은 gradle.properties
에 작성한 key와 동일하게 입력해야함
resolutionStrategy
의 eachPlugin
을 통해 돌면서 id의 값을 찾아 useVersion
을 통해 버전을 세팅하는 코드
plugins 중 kotlin(”…”)
형식으로 작성된 부붙은 prefix로 “org.jetbrains.kotlin”
을 붙여주면 됨
코드 예시
// settings.gradle.kts
pluginManagement {
val kotlinVersion: String by settings
val springBootVersion: String by settings
val springDependencyManagementVersion: String by settings
resolutionStrategy {
eachPlugin {
when(requested.id.id) {
"org.springframework.boot" -> useVersion(springBootVersion)
"io.spring-dependency-management" -> useVersion(springDependencyManagementVersion)
"org.jetbrains.kotlin.jvm", "org.jetbrains.kotlin.plugin.spring" -> useVersion(kotlinVersion)
}
}
}
}
// build.gradle.kts 적용
val projectGroup: String by project
val applicationVersion: String by project
group = projectGroup
version = applicationVersion
repositories {
mavenCentral()
}