Skip to content

Commit

Permalink
Configure a core plugin by Extension
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
jjohannes committed Jan 6, 2022
1 parent db3549e commit 31ac5df
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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))
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,8 @@ plugins {
id("java")
id("com.diffplug.spotless")
}

// Configure Java compilation
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,9 @@ abstract class MyJavaBasePlugin implements Plugin<Project> {
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))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,9 @@ abstract public class MyJavaBasePlugin implements Plugin<Project> {
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));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,8 @@ plugins {
id("java")
id("com.diffplug.spotless")
}

// Configure Java compilation
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,9 @@ abstract class MyJavaBasePlugin : Plugin<Project> {
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))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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))
}
}

0 comments on commit 31ac5df

Please sign in to comment.