Skip to content

Commit f123608

Browse files
authored
Use Gradle Version Catalog for defining dependencies and versions (#227)
Using a Version Catalog helps with sharing dependencies and aligning versions between different projects. This is particularly useful because Benchmarks uses Included Builds, and Version Catalogs make it easy to make sure the same dependencies are used in each project. Notes: - The version of binary-compatibility-validator was `0.15.0-Beta.1` in the root build, but `0.15.0-Beta.2` in the Benchmark Gradle Plugin build. I had to choose the lower version, because `0.15.0-Beta.2` requires a newer version of Gradle. - The `kotlinx.team.infra` plugin does not have a published Gradle Plugin Marker, so it has to use the legacy plugin application method (buildscript classpath).
1 parent 7950a87 commit f123608

File tree

7 files changed

+58
-30
lines changed

7 files changed

+58
-30
lines changed

build.gradle

+4-4
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ buildscript {
99
}
1010

1111
dependencies {
12-
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
13-
classpath "kotlinx.team:kotlinx.team.infra:$infra_version"
12+
classpath(libs.kotlinx.teamInfraGradlePlugin)
1413
}
1514
}
1615

1716
plugins {
1817
id("base")
19-
id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.15.0-Beta.1"
18+
alias(libs.plugins.kotlin.multiplatform) apply false
19+
alias(libs.plugins.kotlinx.binaryCompatibilityValidator)
2020
}
2121

2222
apply plugin: 'kotlinx.team.infra'
@@ -55,7 +55,7 @@ afterEvaluate {
5555
//endregion
5656

5757
allprojects {
58-
logger.info("Using Kotlin $kotlin_version for project $it")
58+
logger.info("Using Kotlin ${libs.versions.kotlin.get()} for project $it")
5959
repositories {
6060
KotlinCommunity.addDevRepositoryIfEnabled(delegate, project)
6161
}

gradle.properties

-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
group=org.jetbrains.kotlinx
22
version=0.5.0-SNAPSHOT
33

4-
kotlin_version=1.9.21
5-
jmhVersion=1.21
6-
infra_version=0.3.0-dev-74
74
kotlin.code.style=official
85
kotlin.incremental.multiplatform=true
96
kotlin.native.distribution.type=prebuilt

gradle/libs.versions.toml

+35
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,38 @@
11
[versions]
22

3+
kotlin = "1.9.21"
4+
kotlinx-binaryCompatibilityValidator = "0.15.0-Beta.1"
5+
kotlinx-teamInfra = "0.3.0-dev-74"
6+
squareup-kotlinpoet = "1.3.0"
7+
jmh = "1.21"
8+
gradle-pluginPublish = "0.21.0"
9+
310
minSupportedGradle = "7.4"
11+
12+
[libraries]
13+
14+
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect" }
15+
16+
kotlin-utilKlibMetadata = { module = "org.jetbrains.kotlin:kotlin-util-klib-metadata" }
17+
kotlin-utilKlib = { module = "org.jetbrains.kotlin:kotlin-util-klib" }
18+
kotlin-utilIo = { module = "org.jetbrains.kotlin:kotlin-util-io" }
19+
20+
kotlin-compilerEmbeddable = { module = "org.jetbrains.kotlin:kotlin-compiler-embeddable", version.ref = "kotlin" }
21+
22+
kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
23+
24+
kotlinx-teamInfraGradlePlugin = { module = "kotlinx.team:kotlinx.team.infra", version.ref = "kotlinx-teamInfra" }
25+
26+
squareup-kotlinpoet = { module = "com.squareup:kotlinpoet", version.ref = "squareup-kotlinpoet" }
27+
28+
jmh-core = { module = "org.openjdk.jmh:jmh-core", version.ref = "jmh" }
29+
jmh-generatorBytecode = { module = "org.openjdk.jmh:jmh-generator-bytecode", version.ref = "jmh" }
30+
31+
[plugins]
32+
33+
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
34+
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
35+
kotlinx-binaryCompatibilityValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "kotlinx-binaryCompatibilityValidator" }
36+
kotlinx-teamInfraGradlePlugin = { id = "kotlinx.team.infra", version.ref = "kotlinx-teamInfra" }
37+
38+
gradle-pluginPublish = { id = "com.gradle.plugin-publish", version.ref = "gradle-pluginPublish" }

integration/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ tasks.test {
2424
systemProperty("plugin_repo_url", plugin.projectDir.resolve("build/maven").absoluteFile.invariantSeparatorsPath)
2525
systemProperty("runtime_repo_url", rootProject.buildDir.resolve("maven").absoluteFile.invariantSeparatorsPath)
2626
systemProperty("kotlin_repo_url", rootProject.properties["kotlin_repo_url"])
27-
systemProperty("kotlin_version", rootProject.properties["kotlin_version"]!!)
27+
systemProperty("kotlin_version", libs.versions.kotlin.get())
2828
systemProperty("minSupportedGradleVersion", libs.versions.minSupportedGradle.get())
2929
}

plugin/build.gradle

+14-14
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ buildscript {
1010
maven { url = kotlinDevUrl }
1111
}
1212
}
13+
1314
dependencies {
14-
classpath "kotlinx.team:kotlinx.team.infra:$infra_version"
15-
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
15+
classpath(libs.kotlinx.teamInfraGradlePlugin)
1616
}
1717
}
1818

1919
plugins {
2020
id 'java-gradle-plugin'
2121
id 'maven-publish'
22-
id 'com.gradle.plugin-publish' version '0.21.0'
23-
id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.15.0-Beta.2"
22+
alias(libs.plugins.gradle.pluginPublish)
23+
alias(libs.plugins.kotlinx.binaryCompatibilityValidator)
24+
alias(libs.plugins.kotlin.jvm)
2425
}
2526

26-
apply(plugin: 'org.jetbrains.kotlin.jvm')
2727
apply(plugin: 'kotlinx.team.infra')
2828

2929
infra {
@@ -37,7 +37,7 @@ infra {
3737
}
3838
}
3939

40-
logger.info("Using Kotlin $kotlin_version for project ${project.name}")
40+
logger.info("Using Kotlin ${libs.versions.kotlin.get()} for project ${project.name}")
4141

4242
repositories {
4343
mavenCentral()
@@ -90,17 +90,17 @@ tasks.named("compileKotlin", KotlinCompilationTask.class) {
9090
}
9191

9292
dependencies {
93-
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: kotlin_version
93+
implementation(libs.kotlin.reflect)
9494

95-
implementation 'com.squareup:kotlinpoet:1.3.0'
95+
implementation(libs.squareup.kotlinpoet)
9696

97-
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-util-klib-metadata', version: kotlin_version
98-
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-util-klib', version: kotlin_version
99-
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-util-io', version: kotlin_version
97+
implementation(libs.kotlin.utilKlibMetadata)
98+
implementation(libs.kotlin.utilKlib)
99+
implementation(libs.kotlin.utilIo)
100100

101-
compileOnly group: 'org.jetbrains.kotlin.multiplatform', name: 'org.jetbrains.kotlin.multiplatform.gradle.plugin', version: kotlin_version
102-
compileOnly "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlin_version"
103-
compileOnly "org.openjdk.jmh:jmh-generator-bytecode:$jmhVersion" // used in worker
101+
compileOnly(libs.kotlin.gradlePlugin)
102+
compileOnly(libs.kotlin.compilerEmbeddable)
103+
compileOnly(libs.jmh.generatorBytecode) // used in worker
104104
}
105105

106106
def generatePluginConstants = tasks.register("generatePluginConstants") {

plugin/gradle.properties

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
group=org.jetbrains.kotlinx
22
version=0.5.0-SNAPSHOT
33

4-
kotlin_version=1.9.21
5-
jmhVersion=1.21
6-
infra_version=0.3.0-dev-74
7-
8-
kotlin.code.style=official
4+
kotlin.code.style=official

runtime/build.gradle

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
22

33
plugins {
4-
id 'org.jetbrains.kotlin.multiplatform'
4+
alias(libs.plugins.kotlin.multiplatform)
55
}
66

77
repositories {
@@ -80,12 +80,12 @@ kotlin {
8080
jvmMain {
8181
dependsOn(commonMain)
8282
dependencies {
83-
compileOnly "org.openjdk.jmh:jmh-core:$jmhVersion"
83+
compileOnly(libs.jmh.core)
8484
}
8585
}
8686
jvmTest {
8787
dependencies {
88-
implementation "org.openjdk.jmh:jmh-core:$jmhVersion"
88+
implementation(libs.jmh.core)
8989
}
9090
}
9191
jsMain {

0 commit comments

Comments
 (0)