From 8ff63b9d9fc4dcbcdbed53b762adead1d6d118ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 20:10:57 +0000 Subject: [PATCH 1/4] Initial plan From 21c982cd983f2f9f1276d93fb17c50995ec2e63e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 20:19:19 +0000 Subject: [PATCH 2/4] Fix Gradle 9 compatibility: upgrade nexus plugin, fix deprecated APIs - Upgrade io.github.gradle-nexus.publish-plugin from 1.3.0 to 2.0.0 (fixes ClassNotFoundException for DefaultDecoratedConvention removed in Gradle 9) - Rename closeAndReleaseStagingRepository to closeAndReleaseStagingRepositories (breaking change in nexus plugin 2.0.0) - Replace deprecated KotlinCompilerVersion with version-less kotlin() dependency - Migrate kotlinOptions DSL to compilerOptions DSL (deprecated in Kotlin 2.3.10) - Replace -Xopt-in with -opt-in compiler flag - Replace deprecated String.toLowerCase() with lowercase() - Replace deprecated buildDir with layout.buildDirectory - Add junit-platform-launcher dependency (required by Gradle 9) Co-authored-by: jGleitz <4305652+jGleitz@users.noreply.github.com> --- base/build.gradle.kts | 21 +++++++++------------ base/src/main/kotlin/DefaultTestFiles.kt | 2 +- build.gradle.kts | 6 +++--- kotest/build.gradle.kts | 17 +++++++---------- spek/build.gradle.kts | 17 +++++++---------- 5 files changed, 27 insertions(+), 36 deletions(-) diff --git a/base/build.gradle.kts b/base/build.gradle.kts index f83c4a6..f171968 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -1,6 +1,5 @@ import org.gradle.api.JavaVersion.VERSION_17 -import org.jetbrains.kotlin.config.KotlinCompilerVersion -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { kotlin("jvm") @@ -16,9 +15,10 @@ dependencies { testImplementation(name = "spek-dsl-jvm", version = spekVersion, group = "org.spekframework.spek2") testImplementation(name = "atrium-fluent-en_GB", version = "0.16.0", group = "ch.tutteli.atrium") testRuntimeOnly(name = "spek-runner-junit5", version = spekVersion, group = "org.spekframework.spek2") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") constraints { - testImplementation(kotlin("reflect", version = KotlinCompilerVersion.VERSION)) + testImplementation(kotlin("reflect")) } } @@ -29,23 +29,20 @@ java { kotlin { explicitApi() -} - -tasks.withType { - kotlinOptions { - jvmTarget = "17" - freeCompilerArgs += "-Xopt-in=kotlin.io.path.ExperimentalPathApi" + compilerOptions { + jvmTarget = JvmTarget.JVM_17 + freeCompilerArgs.add("-opt-in=kotlin.io.path.ExperimentalPathApi") } } tasks.withType { useJUnitPlatform() - val testPwd = buildDir.resolve("test-pwd") + val testPwd = layout.buildDirectory.dir("test-pwd") doFirst { - testPwd.mkdirs() + testPwd.get().asFile.mkdirs() } - workingDir = testPwd + workingDir = testPwd.get().asFile } diff --git a/base/src/main/kotlin/DefaultTestFiles.kt b/base/src/main/kotlin/DefaultTestFiles.kt index edccfb3..c84a011 100644 --- a/base/src/main/kotlin/DefaultTestFiles.kt +++ b/base/src/main/kotlin/DefaultTestFiles.kt @@ -159,7 +159,7 @@ public class DefaultTestFiles: TestFiles { private val unixInvalidCharacters get() = Regex("[/\u0000]") private val windowsInvalidCharacters get() = Regex("[/\\\\<>:\"|?*\u0000]") private val invalidFileNameCharacters by lazy(PUBLICATION) { - val osName = System.getProperty("os.name").toLowerCase() + val osName = System.getProperty("os.name").lowercase() if (setOf("nix", "nux", "aix", "mac").any { osName.contains(it) }) unixInvalidCharacters else windowsInvalidCharacters // default to windows because it is the most restrictive } diff --git a/build.gradle.kts b/build.gradle.kts index 4ef9848..cd86adb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { id("org.jetbrains.dokka-javadoc") version "2.1.0" apply false `maven-publish` signing - id("io.github.gradle-nexus.publish-plugin") version "1.3.0" + id("io.github.gradle-nexus.publish-plugin") version "2.0.0" idea } @@ -150,10 +150,10 @@ subprojects { tasks.register("release") { group = "release" description = "Releases the project to all remote repositories" - dependsOn(publishToGithub, publishToMavenCentral, rootProject.tasks.closeAndReleaseStagingRepository) + dependsOn(publishToGithub, publishToMavenCentral, rootProject.tasks.closeAndReleaseStagingRepositories) } - rootProject.tasks.closeAndReleaseStagingRepository { mustRunAfter(publishToMavenCentral) } + rootProject.tasks.closeAndReleaseStagingRepositories { mustRunAfter(publishToMavenCentral) } } } diff --git a/kotest/build.gradle.kts b/kotest/build.gradle.kts index 5841811..c443168 100644 --- a/kotest/build.gradle.kts +++ b/kotest/build.gradle.kts @@ -1,6 +1,5 @@ import org.gradle.api.JavaVersion.VERSION_17 -import org.jetbrains.kotlin.config.KotlinCompilerVersion -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { kotlin("jvm") @@ -19,9 +18,10 @@ dependencies { testImplementation(name = "kotest-runner-junit5", version = kotestVersion, group = "io.kotest") testImplementation(name = "atrium-fluent-en_GB", version = "0.16.0", group = "ch.tutteli.atrium") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") constraints { - testImplementation(kotlin("reflect", version = KotlinCompilerVersion.VERSION)) + testImplementation(kotlin("reflect")) } } @@ -32,17 +32,14 @@ java { kotlin { explicitApi() -} - -tasks.withType { - kotlinOptions { - jvmTarget = "17" + compilerOptions { + jvmTarget = JvmTarget.JVM_17 } } tasks.compileTestKotlin { - kotlinOptions { - freeCompilerArgs += "-Xopt-in=kotlin.io.path.ExperimentalPathApi" + compilerOptions { + freeCompilerArgs.add("-opt-in=kotlin.io.path.ExperimentalPathApi") } } diff --git a/spek/build.gradle.kts b/spek/build.gradle.kts index dad334f..c9feff8 100644 --- a/spek/build.gradle.kts +++ b/spek/build.gradle.kts @@ -1,6 +1,5 @@ import org.gradle.api.JavaVersion.VERSION_17 -import org.jetbrains.kotlin.config.KotlinCompilerVersion -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { kotlin("jvm") @@ -21,9 +20,10 @@ dependencies { testImplementation(name = "spek-dsl-jvm", version = spekVersion, group = "org.spekframework.spek2") testImplementation(name = "atrium-fluent-en_GB", version = "0.16.0", group = "ch.tutteli.atrium") testRuntimeOnly(name = "spek-runner-junit5", version = spekVersion, group = "org.spekframework.spek2") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") constraints { - testImplementation(kotlin("reflect", version = KotlinCompilerVersion.VERSION)) + testImplementation(kotlin("reflect")) } } @@ -34,17 +34,14 @@ java { kotlin { explicitApi() -} - -tasks.withType { - kotlinOptions { - jvmTarget = "17" + compilerOptions { + jvmTarget = JvmTarget.JVM_17 } } tasks.compileTestKotlin { - kotlinOptions { - freeCompilerArgs += "-Xopt-in=kotlin.io.path.ExperimentalPathApi" + compilerOptions { + freeCompilerArgs.add("-opt-in=kotlin.io.path.ExperimentalPathApi") } } From 39633f761a7374390797a3d917338fb316abb53e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 20:27:10 +0000 Subject: [PATCH 3/4] refactor: remove explicitApi() opt-in from build files Co-authored-by: jGleitz <4305652+jGleitz@users.noreply.github.com> --- base/build.gradle.kts | 1 - kotest/build.gradle.kts | 1 - spek/build.gradle.kts | 1 - 3 files changed, 3 deletions(-) diff --git a/base/build.gradle.kts b/base/build.gradle.kts index f171968..353bdf7 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -28,7 +28,6 @@ java { } kotlin { - explicitApi() compilerOptions { jvmTarget = JvmTarget.JVM_17 freeCompilerArgs.add("-opt-in=kotlin.io.path.ExperimentalPathApi") diff --git a/kotest/build.gradle.kts b/kotest/build.gradle.kts index c443168..b90b7f5 100644 --- a/kotest/build.gradle.kts +++ b/kotest/build.gradle.kts @@ -31,7 +31,6 @@ java { } kotlin { - explicitApi() compilerOptions { jvmTarget = JvmTarget.JVM_17 } diff --git a/spek/build.gradle.kts b/spek/build.gradle.kts index c9feff8..36ffc4d 100644 --- a/spek/build.gradle.kts +++ b/spek/build.gradle.kts @@ -33,7 +33,6 @@ java { } kotlin { - explicitApi() compilerOptions { jvmTarget = JvmTarget.JVM_17 } From 73256ff7dbfe1e4240a7af034a6da92d18b03b45 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 20:32:34 +0000 Subject: [PATCH 4/4] refactor: remove ExperimentalPathApi opt-in and restore explicitApi() Co-authored-by: jGleitz <4305652+jGleitz@users.noreply.github.com> --- base/build.gradle.kts | 2 +- kotest/build.gradle.kts | 7 +------ spek/build.gradle.kts | 7 +------ 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/base/build.gradle.kts b/base/build.gradle.kts index 353bdf7..841f32e 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -28,9 +28,9 @@ java { } kotlin { + explicitApi() compilerOptions { jvmTarget = JvmTarget.JVM_17 - freeCompilerArgs.add("-opt-in=kotlin.io.path.ExperimentalPathApi") } } diff --git a/kotest/build.gradle.kts b/kotest/build.gradle.kts index b90b7f5..c5b376d 100644 --- a/kotest/build.gradle.kts +++ b/kotest/build.gradle.kts @@ -31,17 +31,12 @@ java { } kotlin { + explicitApi() compilerOptions { jvmTarget = JvmTarget.JVM_17 } } -tasks.compileTestKotlin { - compilerOptions { - freeCompilerArgs.add("-opt-in=kotlin.io.path.ExperimentalPathApi") - } -} - dokka { dokkaSourceSets.main { samples.from("src/test/kotlin/samples/ExampleSpek.kt") diff --git a/spek/build.gradle.kts b/spek/build.gradle.kts index 36ffc4d..f776992 100644 --- a/spek/build.gradle.kts +++ b/spek/build.gradle.kts @@ -33,17 +33,12 @@ java { } kotlin { + explicitApi() compilerOptions { jvmTarget = JvmTarget.JVM_17 } } -tasks.compileTestKotlin { - compilerOptions { - freeCompilerArgs.add("-opt-in=kotlin.io.path.ExperimentalPathApi") - } -} - dokka { dokkaSourceSets.main { samples.from("src/test/kotlin/samples/ExampleSpek.kt")