From 31ac5dfd6de18f96bef711fedd68a9ae903c0daf Mon Sep 17 00:00:00 2001 From: Jendrik Johannes Date: Thu, 6 Jan 2022 10:13:50 +0100 Subject: [PATCH] Configure a core plugin by Extension Ideally, plugins provide Extensions to configure them. The Java plugins that are delivered with Gradle provide the 'java { }' extension. As an example, we use it to set the Java version to 17. In the Kotlin DSL and the Groovy DSL, an extension is accessed directly by its name. In class-baed approaches, we need to retrieve it via 'extensions.getByType()' and provide the implementation type of the extension there. --- .../onepiece/gradle/pluginshowto/MyJavaBasePlugin.clj | 3 +++ .../software.onepiece.gradle.pluginshowto.java-base.gradle | 5 +++++ .../onepiece/gradle/pluginshowto/MyJavaBasePlugin.groovy | 4 ++++ .../onepiece/gradle/pluginshowto/MyJavaBasePlugin.java | 4 ++++ ...oftware.onepiece.gradle.pluginshowto.java-base.gradle.kts | 5 +++++ .../onepiece/gradle/pluginshowto/MyJavaBasePlugin.kt | 4 ++++ .../onepiece/gradle/pluginshowto/MyJavaBasePlugin.scala | 4 ++++ 7 files changed, 29 insertions(+) diff --git a/clojure/gradle-build-logic/java-plugins/src/main/clojure/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.clj b/clojure/gradle-build-logic/java-plugins/src/main/clojure/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.clj index 92e2546..358cef6 100644 --- a/clojure/gradle-build-logic/java-plugins/src/main/clojure/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.clj +++ b/clojure/gradle-build-logic/java-plugins/src/main/clojure/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.clj @@ -15,5 +15,8 @@ (do (.apply (.getPlugins project) JavaPlugin) (.apply (.getPlugins project) SpotlessPlugin) + + ; Configure Java compilation + (.set (.getLanguageVersion (.getToolchain (.getByType (.getExtensions project) JavaPluginExtension))) (JavaLanguageVersion/of 17)) ) ) \ No newline at end of file diff --git a/groovy-dsl/gradle-build-logic/java-plugins/src/main/groovy/software.onepiece.gradle.pluginshowto.java-base.gradle b/groovy-dsl/gradle-build-logic/java-plugins/src/main/groovy/software.onepiece.gradle.pluginshowto.java-base.gradle index e9e8dfe..da9a38b 100644 --- a/groovy-dsl/gradle-build-logic/java-plugins/src/main/groovy/software.onepiece.gradle.pluginshowto.java-base.gradle +++ b/groovy-dsl/gradle-build-logic/java-plugins/src/main/groovy/software.onepiece.gradle.pluginshowto.java-base.gradle @@ -2,3 +2,8 @@ plugins { id("java") id("com.diffplug.spotless") } + +// Configure Java compilation +java { + toolchain.languageVersion.set(JavaLanguageVersion.of(17)) +} diff --git a/groovy/gradle-build-logic/java-plugins/src/main/groovy/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.groovy b/groovy/gradle-build-logic/java-plugins/src/main/groovy/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.groovy index dec8dbe..21423c6 100644 --- a/groovy/gradle-build-logic/java-plugins/src/main/groovy/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.groovy +++ b/groovy/gradle-build-logic/java-plugins/src/main/groovy/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.groovy @@ -21,5 +21,9 @@ abstract class MyJavaBasePlugin implements Plugin { void apply(Project project) { project.plugins.apply(JavaPlugin) project.plugins.apply(SpotlessPlugin) + + // Configure Java compilation + def java = project.extensions.getByType(JavaPluginExtension) + java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) } } diff --git a/java/gradle-build-logic/java-plugins/src/main/java/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.java b/java/gradle-build-logic/java-plugins/src/main/java/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.java index 4aa28c3..9936c9a 100644 --- a/java/gradle-build-logic/java-plugins/src/main/java/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.java +++ b/java/gradle-build-logic/java-plugins/src/main/java/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.java @@ -20,5 +20,9 @@ abstract public class MyJavaBasePlugin implements Plugin { public void apply(Project project) { project.getPlugins().apply(JavaPlugin.class); project.getPlugins().apply(SpotlessPlugin.class); + + // Configure Java compilation + JavaPluginExtension java = project.getExtensions().getByType(JavaPluginExtension.class); + java.getToolchain().getLanguageVersion().set(JavaLanguageVersion.of(17)); } } diff --git a/kotlin-dsl/gradle-build-logic/java-plugins/src/main/kotlin/software.onepiece.gradle.pluginshowto.java-base.gradle.kts b/kotlin-dsl/gradle-build-logic/java-plugins/src/main/kotlin/software.onepiece.gradle.pluginshowto.java-base.gradle.kts index e9e8dfe..da9a38b 100644 --- a/kotlin-dsl/gradle-build-logic/java-plugins/src/main/kotlin/software.onepiece.gradle.pluginshowto.java-base.gradle.kts +++ b/kotlin-dsl/gradle-build-logic/java-plugins/src/main/kotlin/software.onepiece.gradle.pluginshowto.java-base.gradle.kts @@ -2,3 +2,8 @@ plugins { id("java") id("com.diffplug.spotless") } + +// Configure Java compilation +java { + toolchain.languageVersion.set(JavaLanguageVersion.of(17)) +} diff --git a/kotlin/gradle-build-logic/java-plugins/src/main/kotlin/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.kt b/kotlin/gradle-build-logic/java-plugins/src/main/kotlin/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.kt index 1c4f67e..c4daefc 100644 --- a/kotlin/gradle-build-logic/java-plugins/src/main/kotlin/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.kt +++ b/kotlin/gradle-build-logic/java-plugins/src/main/kotlin/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.kt @@ -15,5 +15,9 @@ abstract class MyJavaBasePlugin : Plugin { override fun apply(project: Project): Unit = with(project) { plugins.apply(JavaPlugin::class.java) plugins.apply(SpotlessPlugin::class.java) + + // Configure Java compilation + val java = extensions.getByType(JavaPluginExtension::class.java) + java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) } } diff --git a/scala/gradle-build-logic/java-plugins/src/main/scala/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.scala b/scala/gradle-build-logic/java-plugins/src/main/scala/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.scala index 1fb10f5..1d82a57 100644 --- a/scala/gradle-build-logic/java-plugins/src/main/scala/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.scala +++ b/scala/gradle-build-logic/java-plugins/src/main/scala/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.scala @@ -12,5 +12,9 @@ abstract class MyJavaBasePlugin extends Plugin[Project] { override def apply(project: Project): Unit = { project.getPlugins.apply(classOf[JavaPlugin]) project.getPlugins.apply(classOf[SpotlessPlugin]) + + // Configure Java compilation + def java = project.getExtensions.getByType(classOf[JavaPluginExtension]) + java.getToolchain.getLanguageVersion.set(JavaLanguageVersion.of(17)) } }