Post
EN

Gradle Version Catalog

gradle version 관리 할 수 있는 version catalog라는 것을 이제 알게 되었다.

도입된 버전은 gradle 7.4 버전 때이고, 그 이전 버전에서는 buildSrc 경로에서 코드로 작성해서 관리했던 것 같다.

어느게 더 편리할까 생각해봤을 때, toml 파일 형식으로 관리하는 것이 좋겠다고 생각했다.

왜 확장자가 toml 이냐고 해서 알아봤더니 또 요 양식이 따로 있었다.

https://toml.io/en/

Gradle version catalog 관련 문서

https://docs.gradle.org/current/userguide/platforms.html

Sharing dependency versions between projects

Sharing dependency versions between projects Contents Central declaration of dependencies Sharing catalogs Using a platform to control transitive versions Importing Maven BOMs Should I use a platform or a catalog? Central declaration of dependencies Using a version catalog A version catalog is a lis…

toml 관련

https://docs.gradle.org/current/userguide/platforms.html#sub:conventional-dependencies-toml

Sharing dependency versions between projects

Sharing dependency versions between projects Contents Central declaration of dependencies Sharing catalogs Using a platform to control transitive versions Importing Maven BOMs Should I use a platform or a catalog? Central declaration of dependencies Using a version catalog A version catalog is a lis…

정리해봤던 toml 파일

[versions] kotlin = "1.9.10" jib = "3.1.4" springBoot = "3.1.1" springDependencyManagement = "1.0.11.RELEASE" springCloud = "4.0.3" springMock = "3.1.1" swaggerUI = "2.2.0" springOpenApi = "1.7.0" springCloudKubernetes = "3.0.4" springCloudOpenFeign = "4.0.4" springCloudDependencies = "2022.0.4" springBootAdmin = "3.1.6" jackson = "2.15.2" envers = "6.2.7.Final" springFramework = "6.0.11" mockk-jvm = "1.13.8" # kotest kotest = "5.5.4" kotestExtensionsSpring = "1.1.2" mockk = "1.12.4" kotlinLoggerVersion = "3.0.2" #netty nettyForMacos = "4.1.79.Final:osx-aarch_64" gradleGitProperties = "2.4.1" ktlint = "11.5.0" mysql = "8.0.32" jasypt = "3.0.5" [libraries] spring-boot-actuator = { module = "org.springframework.boot:spring-boot-starter-actuator", version.ref = "springBoot" } spring-boot-validation = { module = "org.springframework.boot:spring-boot-starter-validation", version.ref = "springBoot" } spring-boot-web = { module = "org.springframework.boot:spring-boot-starter-web", version.ref = "springBoot" } spring-boot-data-jpa = { module = "org.springframework.boot:spring-boot-starter-data-jpa", version.ref = "springBoot" } spring-boot-test = { module = "org.springframework.boot:spring-boot-starter-test", version.ref = "springBoot" } spring-boot-admin-server = { module = "de.codecentric:spring-boot-admin-starter-server", version.ref = "springBootAdmin" } spring-boot-admin-client = { module = "de.codecentric:spring-boot-admin-starter-client", version.ref = "springBootAdmin" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } spring-cloud-starter-kubernetest-fabric8-all = { module = "org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-all", version.ref = "springCloudKubernetes" } spring-cloud-open-feign = { module = "org.springframework.cloud:spring-cloud-starter-openfeign", version.ref = "springCloudOpenFeign" } spring-cloud-dependencies = { module = "org.springframework.cloud:spring-cloud-dependencies", version.ref = "springCloudDependencies" } spring-context = { module = "org.springframework:spring-context", version.ref = "springFramework" } spring-context-tx = { module = "org.springframework:spring-tx", version.ref = "springFramework" } springdoc-openapi-start-webmvc-ui = { module = "org.springdoc:springdoc-openapi-starter-webmvc-ui", version.ref = "swaggerUI" } hibernate-envers = { module = "org.hibernate:hibernate-envers", version.ref = "envers" } #querydsl-apt-jakarta = { module = "com.querydsl:querydsl-apt", version.ref = "queryDsl" } #querydsl-jpa-jakarta = { module = "com.querydsl:querydsl-jpa", version.ref = "queryDsl"} jackson-module-kotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "jackson" } mysql-connector-java = { module = "mysql:mysql-connector-java", version.ref = "mysql" } jasypt-spring-boot-starter = { module = "com.github.ulisesbocchio:jasypt-spring-boot-starter", version.ref = "jasypt" } kotlin-logging-jvm = { module = "io.github.microutils:kotlin-logging-jvm", version.ref = "kotlinLoggerVersion" } kotest-runner-junit5 = { module = "io.kotest:kotest-runner-junit5", version.ref = "kotest" } kotest-extensions-spring = { module = "io.kotest.extensions:kotest-extensions-spring", version.ref = "kotestExtensionsSpring" } kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } mockk = { module = "io.mockk:mockk", version.ref = "mockk" } mockk-jvm = { module = "io.mockk:mockk-jvm", version.ref = "mockk-jvm" } [plugins] kotlin = { id = "kotlin", version.ref = "kotlin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-spring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" } kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } kotlin-jpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kotlin" } kotlin-noarg = { id = "org.jetbrains.kotlin.plugin.noarg", version.ref = "kotlin" } kotlin-allopen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlin" } jib = { id = "com.google.cloud.tools.jib", version.ref = "jib" } gradle-git-properties = { id = "com.gorylenko.gradle-git-properties", version.ref = "gradleGitProperties" } ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } springboot = { id = "org.springframework.boot", version.ref = "springBoot" } spring-dependencyManagement = { id = "io.spring.dependency-management", version.ref = "springDependencyManagement" }

// 23.11.16

version catalog에 등록한 라이브러리를 찾기 위해서, dependencies에 libs… 연결해서 찾았었는데, 펑션이 존재했다.

findLibrary

글 작성했을 때 당시

dependencies { implementation(libs.spring.boot.starter.actuator) implementation(libs.spring-boot.starter.validation) implementation(libs.logstash.logback.encoder) }

알아낸 것

dependencies { implementation(libs.findLibrary("spring-boot-starter-actuator").get()) implementation(libs.findLibrary("spring-boot-starter-validation").get()) implementation(libs.findLibrary("logstash-logback-encoder").get()) }

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