From 121add8ef78dd18e6f199c898318ad1fe77316e6 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Wed, 21 May 2025 09:29:37 +0200 Subject: [PATCH] Upgrade to Kotlin 2.1 This commit also follows Framework 7.0 with a Kotlin 2.x baseline for all applications. Closes gh-1203 --- buildSrc/build.gradle | 1 - .../build/conventions/KotlinConventions.java | 28 ++++++++++--------- gradle.properties | 2 +- platform/build.gradle | 2 +- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index c21bd27c..101812b6 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -22,7 +22,6 @@ dependencies { checkstyle("io.spring.javaformat:spring-javaformat-checkstyle:${javaFormatVersion}") implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}") - implementation("org.jetbrains.kotlin:kotlin-compiler-embeddable:${kotlinVersion}") implementation("io.spring.javaformat:spring-javaformat-gradle-plugin:${javaFormatVersion}") implementation "com.tngtech.archunit:archunit:1.4.0" } diff --git a/buildSrc/src/main/java/org/springframework/graphql/build/conventions/KotlinConventions.java b/buildSrc/src/main/java/org/springframework/graphql/build/conventions/KotlinConventions.java index b503eb92..01277874 100644 --- a/buildSrc/src/main/java/org/springframework/graphql/build/conventions/KotlinConventions.java +++ b/buildSrc/src/main/java/org/springframework/graphql/build/conventions/KotlinConventions.java @@ -16,11 +16,9 @@ package org.springframework.graphql.build.conventions; -import java.util.ArrayList; -import java.util.List; - import org.gradle.api.Project; -import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions; +import org.jetbrains.kotlin.gradle.dsl.JvmTarget; +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion; import org.jetbrains.kotlin.gradle.tasks.KotlinCompile; /** @@ -35,15 +33,19 @@ public class KotlinConventions { } private void configure(KotlinCompile compile) { - KotlinJvmOptions kotlinOptions = compile.getKotlinOptions(); - kotlinOptions.setApiVersion("1.7"); - kotlinOptions.setLanguageVersion("1.7"); - kotlinOptions.setJvmTarget("17"); - kotlinOptions.setJavaParameters(true); - kotlinOptions.setAllWarningsAsErrors(true); - List freeCompilerArgs = new ArrayList<>(compile.getKotlinOptions().getFreeCompilerArgs()); - freeCompilerArgs.addAll(List.of("-Xsuppress-version-warnings", "-Xjsr305=strict", "-opt-in=kotlin.RequiresOptIn")); - compile.getKotlinOptions().setFreeCompilerArgs(freeCompilerArgs); + compile.compilerOptions(options -> { + options.getApiVersion().set(KotlinVersion.KOTLIN_2_1); + options.getLanguageVersion().set(KotlinVersion.KOTLIN_2_1); + options.getJvmTarget().set(JvmTarget.JVM_17); + options.getJavaParameters().set(true); + options.getAllWarningsAsErrors().set(true); + options.getFreeCompilerArgs().addAll( + "-Xsuppress-version-warnings", + "-Xjsr305=strict", // For dependencies using JSR 305 + "-opt-in=kotlin.RequiresOptIn", + "-Xjdk-release=17" // Needed due to https://youtrack.jetbrains.com/issue/KT-49746 + ); + }); } } diff --git a/gradle.properties b/gradle.properties index d043b485..758ac1b1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,6 +5,6 @@ org.gradle.daemon=true org.gradle.parallel=true org.gradle.jvmargs=-Dfile.encoding=UTF-8 -kotlinVersion=1.9.25 +kotlinVersion=2.1.20 kotlin.stdlib.default.dependency=false diff --git a/platform/build.gradle b/platform/build.gradle index aeb59cb2..43e0784b 100644 --- a/platform/build.gradle +++ b/platform/build.gradle @@ -17,7 +17,7 @@ dependencies { api(platform("com.querydsl:querydsl-bom:5.1.0")) api(platform("io.rsocket:rsocket-bom:1.1.5")) api(platform("org.jetbrains.kotlin:kotlin-bom:${kotlinVersion}")) - api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1")) + api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1")) api(platform("org.junit:junit-bom:5.12.2")) api(platform("org.mockito:mockito-bom:5.16.0")) api(platform("org.testcontainers:testcontainers-bom:1.21.0"))