Skip to content

Commit 31ac5df

Browse files
committed
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.
1 parent db3549e commit 31ac5df

File tree

7 files changed

+29
-0
lines changed

7 files changed

+29
-0
lines changed

clojure/gradle-build-logic/java-plugins/src/main/clojure/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.clj

+3
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,8 @@
1515
(do
1616
(.apply (.getPlugins project) JavaPlugin)
1717
(.apply (.getPlugins project) SpotlessPlugin)
18+
19+
; Configure Java compilation
20+
(.set (.getLanguageVersion (.getToolchain (.getByType (.getExtensions project) JavaPluginExtension))) (JavaLanguageVersion/of 17))
1821
)
1922
)

groovy-dsl/gradle-build-logic/java-plugins/src/main/groovy/software.onepiece.gradle.pluginshowto.java-base.gradle

+5
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@ plugins {
22
id("java")
33
id("com.diffplug.spotless")
44
}
5+
6+
// Configure Java compilation
7+
java {
8+
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
9+
}

groovy/gradle-build-logic/java-plugins/src/main/groovy/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.groovy

+4
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,9 @@ abstract class MyJavaBasePlugin implements Plugin<Project> {
2121
void apply(Project project) {
2222
project.plugins.apply(JavaPlugin)
2323
project.plugins.apply(SpotlessPlugin)
24+
25+
// Configure Java compilation
26+
def java = project.extensions.getByType(JavaPluginExtension)
27+
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
2428
}
2529
}

java/gradle-build-logic/java-plugins/src/main/java/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.java

+4
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,9 @@ abstract public class MyJavaBasePlugin implements Plugin<Project> {
2020
public void apply(Project project) {
2121
project.getPlugins().apply(JavaPlugin.class);
2222
project.getPlugins().apply(SpotlessPlugin.class);
23+
24+
// Configure Java compilation
25+
JavaPluginExtension java = project.getExtensions().getByType(JavaPluginExtension.class);
26+
java.getToolchain().getLanguageVersion().set(JavaLanguageVersion.of(17));
2327
}
2428
}

kotlin-dsl/gradle-build-logic/java-plugins/src/main/kotlin/software.onepiece.gradle.pluginshowto.java-base.gradle.kts

+5
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@ plugins {
22
id("java")
33
id("com.diffplug.spotless")
44
}
5+
6+
// Configure Java compilation
7+
java {
8+
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
9+
}

kotlin/gradle-build-logic/java-plugins/src/main/kotlin/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.kt

+4
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@ abstract class MyJavaBasePlugin : Plugin<Project> {
1515
override fun apply(project: Project): Unit = with(project) {
1616
plugins.apply(JavaPlugin::class.java)
1717
plugins.apply(SpotlessPlugin::class.java)
18+
19+
// Configure Java compilation
20+
val java = extensions.getByType(JavaPluginExtension::class.java)
21+
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
1822
}
1923
}

scala/gradle-build-logic/java-plugins/src/main/scala/software/onepiece/gradle/pluginshowto/MyJavaBasePlugin.scala

+4
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,9 @@ abstract class MyJavaBasePlugin extends Plugin[Project] {
1212
override def apply(project: Project): Unit = {
1313
project.getPlugins.apply(classOf[JavaPlugin])
1414
project.getPlugins.apply(classOf[SpotlessPlugin])
15+
16+
// Configure Java compilation
17+
def java = project.getExtensions.getByType(classOf[JavaPluginExtension])
18+
java.getToolchain.getLanguageVersion.set(JavaLanguageVersion.of(17))
1519
}
1620
}

0 commit comments

Comments
 (0)