Skip to content

Commit 39baa4d

Browse files
committed
Configure a comunity plugin by Extension
Similar to core plugins, also community plugins (or your own plugins) may provide extensions to configure them. 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 a4d53b5 commit 39baa4d

File tree

7 files changed

+56
-0
lines changed

7 files changed

+56
-0
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,12 @@
2525
(.showStackTraces (.getTestLogging test) true)
2626
))))
2727
(.add (.getDependencies project) "implementation" "org.junit.jupiter:junit-jupiter:5.7.2")
28+
29+
; Configure a community plugin - example Spotless
30+
(.format (.getByType (.getExtensions project) SpotlessExtension) "buildFiles" (reify Action (execute [this format] (do
31+
(.target format (into-array Object ["build.gradle.kts"]))
32+
(.trimTrailingWhitespace format)
33+
(.endWithNewline format)
34+
))))
2835
)
2936
)

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,12 @@ tasks.named("test") {
1616
dependencies {
1717
testImplementation("org.junit.jupiter:junit-jupiter:5.7.2")
1818
}
19+
20+
// Configure a community plugin - example Spotless
21+
spotless {
22+
format("buildFiles") {
23+
target("build.gradle.kts")
24+
trimTrailingWhitespace()
25+
endWithNewline()
26+
}
27+
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,13 @@ abstract class MyJavaBasePlugin implements Plugin<Project> {
3232
it.testLogging.showStackTraces = true
3333
}
3434
project.dependencies.add(TEST_IMPLEMENTATION_CONFIGURATION_NAME, "org.junit.jupiter:junit-jupiter:5.7.2")
35+
36+
// Configure a community plugin - example Spotless
37+
def spotless = project.extensions.getByType(SpotlessExtension)
38+
spotless.format("buildFiles") {
39+
it.target("build.gradle.kts")
40+
it.trimTrailingWhitespace()
41+
it.endWithNewline()
42+
}
3543
}
3644
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,13 @@ public void apply(Project project) {
3131
test.getTestLogging().setShowStackTraces(true);
3232
});
3333
project.getDependencies().add(TEST_IMPLEMENTATION_CONFIGURATION_NAME, "org.junit.jupiter:junit-jupiter:5.7.2");
34+
35+
// Configure a community plugin - example Spotless
36+
SpotlessExtension spotless = project.getExtensions().getByType(SpotlessExtension.class);
37+
spotless.format("buildFiles", format -> {
38+
format.target("build.gradle.kts");
39+
format.trimTrailingWhitespace();
40+
format.endWithNewline();
41+
});
3442
}
3543
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,11 @@ dependencies {
1717
testImplementation("org.junit.jupiter:junit-jupiter:5.7.2")
1818
}
1919

20+
// Configure a community plugin - example Spotless
21+
spotless {
22+
format("buildFiles") {
23+
target("build.gradle.kts")
24+
trimTrailingWhitespace()
25+
endWithNewline()
26+
}
27+
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,13 @@ abstract class MyJavaBasePlugin : Plugin<Project> {
2626
it.testLogging.showStackTraces = true
2727
}
2828
dependencies.add(TEST_IMPLEMENTATION_CONFIGURATION_NAME, "org.junit.jupiter:junit-jupiter:5.7.2")
29+
30+
// Configure a community plugin - example Spotless
31+
val spotless = extensions.getByType(SpotlessExtension::class.java)
32+
spotless.format("buildFiles") {
33+
it.target("build.gradle.kts")
34+
it.trimTrailingWhitespace()
35+
it.endWithNewline()
36+
}
2937
}
3038
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,13 @@ abstract class MyJavaBasePlugin extends Plugin[Project] {
2323
test.getTestLogging.setShowStandardStreams(true)
2424
} : Unit)
2525
project.getDependencies.add(TEST_IMPLEMENTATION_CONFIGURATION_NAME, "org.junit.jupiter:junit-jupiter:5.7.2")
26+
27+
// Configure a community plugin - example Spotless
28+
def spotless = project.getExtensions.getByType(classOf[SpotlessExtension])
29+
spotless.format("buildFiles", (format: FormatExtension) => {
30+
format.target("build.gradle.kts")
31+
format.trimTrailingWhitespace()
32+
format.endWithNewline()
33+
})
2634
}
2735
}

0 commit comments

Comments
 (0)