From 7c8caf9ef5702258ffda5db6d5eac9c7ee058278 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 7 Apr 2021 11:43:39 +0100 Subject: [PATCH] Configure Kotlin compilation to use 1.3 apiVersion and languageVersion Closes gh-25793 --- buildSrc/build.gradle | 2 + .../boot/build/ConventionsPlugin.java | 1 + .../boot/build/KotlinConventions.java | 48 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 buildSrc/src/main/java/org/springframework/boot/build/KotlinConventions.java diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 0a41ffbac32..3fbcc5e0e25 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -21,6 +21,8 @@ dependencies { implementation("org.asciidoctor:asciidoctor-gradle-jvm:3.0.0") implementation("org.asciidoctor:asciidoctor-gradle-jvm-pdf:3.0.0") implementation("org.gradle:test-retry-gradle-plugin:1.1.9") + implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + implementation("org.jetbrains.kotlin:kotlin-compiler-embeddable:1.3.72") implementation("org.springframework:spring-core:5.2.2.RELEASE") implementation("org.springframework:spring-web:5.2.2.RELEASE") implementation("io.spring.javaformat:spring-javaformat-gradle-plugin:${javaFormatVersion}") diff --git a/buildSrc/src/main/java/org/springframework/boot/build/ConventionsPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/ConventionsPlugin.java index 3454a2efa51..66aecc87937 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/ConventionsPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/ConventionsPlugin.java @@ -46,6 +46,7 @@ public class ConventionsPlugin implements Plugin { new JavaConventions().apply(project); new MavenPublishingConventions().apply(project); new AsciidoctorConventions().apply(project); + new KotlinConventions().apply(project); } } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/KotlinConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/KotlinConventions.java new file mode 100644 index 00000000000..6f6c8e35c13 --- /dev/null +++ b/buildSrc/src/main/java/org/springframework/boot/build/KotlinConventions.java @@ -0,0 +1,48 @@ +/* + * Copyright 2012-2021 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.build; + +import org.gradle.api.Project; +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions; +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile; + +/** + * Conventions that are applied in the presence of the {@code org.jetbrains.kotlin.jvm} + * plugin. When the plugin is applied: + * + * + * + *

+ * + * @author Andy Wilkinson + */ +class KotlinConventions { + + void apply(Project project) { + project.getPlugins().withId("org.jetbrains.kotlin.jvm", (plugin) -> { + project.getTasks().withType(KotlinCompile.class, (compile) -> { + KotlinJvmOptions kotlinOptions = compile.getKotlinOptions(); + kotlinOptions.setApiVersion("1.3"); + kotlinOptions.setLanguageVersion("1.3"); + }); + }); + } + +}