Skip to content

Commit cbde081

Browse files
committed
chore: commonize kotlin-dsl to build-logic
1 parent bdea105 commit cbde081

File tree

6 files changed

+91
-151
lines changed

6 files changed

+91
-151
lines changed

gradle/build-logic/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ dependencies {
9393
implementation(libs.ajalt.mordant.coroutines)
9494
implementation(libs.build.tomlj)
9595

96-
// For using `kotlin-dsl` in pre-compiled script plugins
96+
// For "Kotlin Gradle plugin" in pre-compiled script plugins
97+
implementation(embeddedKotlin("gradle-plugin"))
98+
// For "kotlin-dsl" plugin in pre-compiled script plugins
9799
implementation("${libs.build.kotlin.dsl.get().module}:${expectedKotlinDslPluginsVersion}")
98100
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
@file:Suppress("UnstableApiUsage")
2+
3+
import common.*
4+
import org.jetbrains.kotlin.gradle.dsl.*
5+
6+
plugins {
7+
id("org.gradle.kotlin.kotlin-dsl")
8+
com.github.`ben-manes`.versions
9+
com.diffplug.spotless
10+
}
11+
12+
description = "Kotlin DSL build plugin!"
13+
14+
// Java version used for Kotlin Gradle precompiled script plugins.
15+
val dslJavaVersion = libs.versions.kotlin.dsl.jvmtarget
16+
17+
kotlin {
18+
compilerOptions {
19+
jvmTarget = dslJavaVersion.map(JvmTarget::fromTarget)
20+
freeCompilerArgs.addAll(
21+
"-Xjdk-release=${dslJavaVersion.get()}",
22+
"-Xno-param-assertions",
23+
"-Xno-call-assertions",
24+
"-Xno-receiver-assertions")
25+
optIn.addAll(
26+
"kotlin.ExperimentalStdlibApi",
27+
"kotlin.time.ExperimentalTime",
28+
"kotlin.io.encoding.ExperimentalEncodingApi",
29+
"kotlinx.coroutines.ExperimentalCoroutinesApi",
30+
"kotlinx.serialization.ExperimentalSerializationApi",
31+
)
32+
}
33+
34+
// explicitApiWarning()
35+
}
36+
37+
tasks {
38+
// Restrict the java release version used in Gradle kotlin DSL to
39+
// avoid accidentally using higher version JDK API in build scripts.
40+
compileJava {
41+
options.apply {
42+
release = dslJavaVersion.map { it.toInt() }
43+
isIncremental = true
44+
}
45+
}
46+
47+
validatePlugins {
48+
failOnWarning = true
49+
enableStricterValidation = true
50+
}
51+
}
52+
53+
dependencies {
54+
implementation(platform(libs.kotlin.bom))
55+
implementation(libs.kotlinx.coroutines.core)
56+
implementation(libs.kotlinx.datetime)
57+
implementation(libs.kotlinx.collections.immutable)
58+
implementation(libs.ktor.client.java)
59+
implementation(libs.ktor.client.content.negotiation)
60+
implementation(libs.ktor.client.encoding)
61+
implementation(libs.ktor.client.logging)
62+
implementation(libs.ktor.client.resources)
63+
implementation(libs.ktor.client.auth)
64+
implementation(libs.ktor.serialization.json)
65+
implementation(libs.ajalt.mordant.coroutines)
66+
testImplementation(gradleTestKit())
67+
}

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ kotlinx-browser = "0.3"
3737
kotlinx-benchmark = "0.4.13"
3838
kotlinx-metadata = "0.9.0"
3939
kotlinx-reflect-lite = "1.1.0"
40-
kotlin-wrappers = "2025.1.11"
40+
kotlin-wrappers = "2025.2.0"
4141
kotlin-redacted = "1.12.0"
4242
kotlin-serviceloader = "0.0.15"
4343
kotlinx-multik = "0.2.3"

plugins/project/build.gradle.kts

Lines changed: 18 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,24 @@
11
@file:Suppress("UnstableApiUsage")
22

33
import gg.jte.gradle.GenerateJteTask
4-
import org.jetbrains.kotlin.gradle.dsl.*
54

65
plugins {
7-
id("org.gradle.kotlin.kotlin-dsl")
6+
id("plugin.kotlin-dsl")
87
embeddedKotlin("plugin.serialization")
98
// embeddedKotlin("jvm")
10-
com.github.`ben-manes`.versions
11-
com.diffplug.spotless
129
gg.jte.gradle
1310
plugin.publishing
1411
}
1512

1613
description = "Gradle build project plugins!"
1714

18-
// Java version used for Kotlin Gradle precompiled script plugins.
19-
val dslJavaVersion = libs.versions.kotlin.dsl.jvmtarget
20-
2115
kotlin {
22-
compilerOptions {
23-
jvmTarget = dslJavaVersion.map(JvmTarget::fromTarget)
24-
freeCompilerArgs.addAll(
25-
"-Xjdk-release=${dslJavaVersion.get()}",
26-
"-Xno-param-assertions",
27-
"-Xno-call-assertions",
28-
"-Xno-receiver-assertions")
29-
optIn.addAll(
30-
"kotlin.ExperimentalStdlibApi",
31-
"kotlin.time.ExperimentalTime",
32-
"kotlin.io.encoding.ExperimentalEncodingApi",
33-
"kotlinx.validation.ExperimentalBCVApi",
34-
"kotlinx.coroutines.ExperimentalCoroutinesApi",
35-
"kotlinx.serialization.ExperimentalSerializationApi",
36-
"org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi",
37-
"org.jetbrains.kotlin.gradle.ExperimentalWasmDsl",
38-
"org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDistributionDsl",
39-
"org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDceDsl")
40-
}
41-
42-
// explicitApiWarning()
43-
}
44-
45-
tasks {
46-
// Restrict the java release version used in Gradle kotlin DSL to
47-
// avoid accidentally using higher version JDK API in build scripts.
48-
compileJava {
49-
options.apply {
50-
release = dslJavaVersion.map { it.toInt() }
51-
isIncremental = true
52-
}
53-
}
54-
55-
validatePlugins {
56-
failOnWarning = true
57-
enableStricterValidation = true
58-
}
59-
60-
withType<GenerateJteTask>().configureEach { mustRunAfter("sourcesJar") }
61-
62-
// Include the generated build version catalog accessors to the final jar
63-
// named<Jar>("jar") {
64-
// from(sourceSets.main.get().output)
65-
// from(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
66-
// archiveClassifier = ""
67-
// }
16+
compilerOptions.optIn.addAll(
17+
"kotlinx.validation.ExperimentalBCVApi",
18+
"org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi",
19+
"org.jetbrains.kotlin.gradle.ExperimentalWasmDsl",
20+
"org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDistributionDsl",
21+
"org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDceDsl")
6822
}
6923

7024
jte {
@@ -114,6 +68,17 @@ gradlePlugin {
11468
}
11569
}
11670

71+
tasks {
72+
withType<GenerateJteTask>().configureEach { mustRunAfter("sourcesJar") }
73+
74+
// Include the generated catalog accessors to the final jar
75+
// named<Jar>("jar") {
76+
// from(sourceSets.main.get().output)
77+
// from(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
78+
// archiveClassifier = ""
79+
// }
80+
}
81+
11782
dependencies {
11883
implementation(projects.plugins.shared)
11984
implementation(libs.build.zip.prefixer)
@@ -163,7 +128,6 @@ dependencies {
163128
// implementation(libs.build.includegit.plugin)
164129
// implementation(libs.build.dependencyanalysis)
165130

166-
testImplementation(gradleTestKit())
167131
// For using kotlin-dsl in pre-compiled script plugins
168132
// implementation("${libs.build.kotlin.dsl.get().module}:${expectedKotlinDslPluginsVersion}")
169133
}

plugins/settings/build.gradle.kts

Lines changed: 1 addition & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,18 @@
11
@file:Suppress("UnstableApiUsage")
22

3-
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
4-
53
plugins {
6-
id("org.gradle.kotlin.kotlin-dsl")
4+
id("plugin.kotlin-dsl")
75
embeddedKotlin("plugin.serialization")
8-
com.github.`ben-manes`.versions
9-
com.diffplug.spotless
106
plugin.publishing
117
}
128

139
description = "Gradle build settings plugins!"
1410

15-
// Java version used for Kotlin Gradle precompiled script plugins.
16-
val dslJavaVersion = libs.versions.kotlin.dsl.jvmtarget
17-
18-
kotlin {
19-
compilerOptions {
20-
jvmTarget = dslJavaVersion.map(JvmTarget::fromTarget)
21-
freeCompilerArgs.addAll(
22-
"-Xjdk-release=${dslJavaVersion.get()}",
23-
"-Xno-param-assertions",
24-
"-Xno-call-assertions",
25-
"-Xno-receiver-assertions")
26-
optIn.addAll(
27-
"kotlin.ExperimentalStdlibApi",
28-
"kotlin.time.ExperimentalTime",
29-
"kotlin.io.encoding.ExperimentalEncodingApi",
30-
"kotlinx.coroutines.ExperimentalCoroutinesApi",
31-
"kotlinx.serialization.ExperimentalSerializationApi",
32-
)
33-
}
34-
}
35-
36-
tasks {
37-
// Restrict the java release version used in Gradle kotlin DSL to
38-
// avoid accidentally using higher version JDK API in build scripts.
39-
compileJava {
40-
options.apply {
41-
release = dslJavaVersion.map { it.toInt() }
42-
isIncremental = true
43-
}
44-
}
45-
46-
validatePlugins {
47-
failOnWarning = true
48-
enableStricterValidation = true
49-
}
50-
}
51-
5211
dependencies {
5312
implementation(projects.plugins.shared)
5413
implementation(libs.build.kotlinx.kover)
5514
implementation(libs.build.gradle.develocity)
5615
implementation(libs.build.semver.plugin)
5716
implementation(libs.build.foojay.resolver)
5817
implementation(libs.build.tomlj)
59-
testImplementation(gradleTestKit())
6018
}

plugins/shared/build.gradle.kts

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,9 @@
11
@file:Suppress("UnstableApiUsage")
22

3-
import org.jetbrains.kotlin.gradle.dsl.*
4-
53
plugins {
6-
id("org.gradle.kotlin.kotlin-dsl")
4+
id("plugin.kotlin-dsl")
75
embeddedKotlin("plugin.serialization")
8-
com.github.`ben-manes`.versions
9-
com.diffplug.spotless
106
plugin.publishing
117
}
128

139
description = "Shared module for build plugins!"
14-
15-
// Java version used for Kotlin Gradle precompiled script plugins.
16-
val dslJavaVersion = libs.versions.kotlin.dsl.jvmtarget
17-
18-
kotlin {
19-
compilerOptions {
20-
jvmTarget = dslJavaVersion.map(JvmTarget::fromTarget)
21-
freeCompilerArgs.addAll(
22-
"-Xjdk-release=${dslJavaVersion.get()}",
23-
"-Xno-param-assertions",
24-
"-Xno-call-assertions",
25-
"-Xno-receiver-assertions")
26-
optIn.addAll(
27-
"kotlin.ExperimentalStdlibApi",
28-
"kotlin.time.ExperimentalTime",
29-
"kotlin.io.encoding.ExperimentalEncodingApi",
30-
"kotlinx.coroutines.ExperimentalCoroutinesApi",
31-
"kotlinx.serialization.ExperimentalSerializationApi",
32-
)
33-
}
34-
35-
// explicitApiWarning()
36-
}
37-
38-
tasks {
39-
compileJava {
40-
options.apply {
41-
release = dslJavaVersion.map { it.toInt() }
42-
isIncremental = true
43-
}
44-
}
45-
}
46-
47-
dependencies {
48-
api(platform(libs.kotlin.bom))
49-
api(libs.kotlinx.coroutines.core)
50-
api(libs.kotlinx.datetime)
51-
api(libs.kotlinx.collections.immutable)
52-
api(libs.ktor.client.java)
53-
api(libs.ktor.client.content.negotiation)
54-
api(libs.ktor.client.encoding)
55-
api(libs.ktor.client.logging)
56-
api(libs.ktor.client.resources)
57-
api(libs.ktor.client.auth)
58-
api(libs.ktor.serialization.json)
59-
api(libs.ajalt.mordant.coroutines)
60-
}

0 commit comments

Comments
 (0)