From 1a4ee049a0380ae28818f3aa8375c38b2ea79410 Mon Sep 17 00:00:00 2001 From: Chris Bono Date: Fri, 28 Mar 2025 01:44:21 -0500 Subject: [PATCH] Polish "automate protobuf generation in tests" This moves the common proto plugin pieces into a shared groovy plugin script. Also, resolves an unrelated (but blocking) error about the `spring-pulsar-cache-provider` module's `compileJava` task depending on the `formatMain` task. --- .../pulsar/gradle/JavaConventionsPlugin.java | 5 +++- gradle/proto-conventions.gradle | 27 +++++++++++++++++++ .../spring-pulsar-reactive.gradle | 20 +------------- spring-pulsar/spring-pulsar.gradle | 22 +-------------- 4 files changed, 33 insertions(+), 41 deletions(-) create mode 100644 gradle/proto-conventions.gradle diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/JavaConventionsPlugin.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/JavaConventionsPlugin.java index f7d7422f..db7b1e5e 100644 --- a/buildSrc/src/main/java/org/springframework/pulsar/gradle/JavaConventionsPlugin.java +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/JavaConventionsPlugin.java @@ -114,7 +114,10 @@ public class JavaConventionsPlugin implements Plugin { private void configureSpringJavaFormat(Project project) { project.getPlugins().apply(SpringJavaFormatPlugin.class); - project.getTasks().withType(Format.class, (Format) -> Format.setEncoding("UTF-8")); + project.getTasks().withType(Format.class, (format) -> { + format.setEncoding("UTF-8"); + project.getTasks().named("compileJava", JavaCompile.class, format::mustRunAfter); + }); project.getPlugins().apply(CheckstylePlugin.class); CheckstyleExtension checkstyle = project.getExtensions().getByType(CheckstyleExtension.class); checkstyle.setToolVersion("10.12.4"); diff --git a/gradle/proto-conventions.gradle b/gradle/proto-conventions.gradle new file mode 100644 index 00000000..951f28b9 --- /dev/null +++ b/gradle/proto-conventions.gradle @@ -0,0 +1,27 @@ +//file:noinspection GroovyUnusedAssignment + +tasks.matching { (it.name "extractIncludeTestFixturesProto") } + +tasks.matching { (it.name == "extractIncludeTestFixturesProto") } + +tasks.matching { (it.name == "extractIncludeTestFixturesProto") } + +tasks.named('extractIncludeProto') { enabled = false } +tasks.named('extractIncludeTestProto') { enabled = false } +tasks.matching { (it.name == "extractIncludeTestFixturesProto") } + .configureEach { enabled = false } + +tasks.withType(io.spring.javaformat.gradle.tasks.CheckFormat).configureEach { task -> + task.source = project.files( + task.source.filter { file -> + !file.path.contains('build/generated/source/proto') + task.enabled = false + } + ) +} + +protobuf { + protoc { + artifact = libs.protobuf.protoc.get() + } +} diff --git a/spring-pulsar-reactive/spring-pulsar-reactive.gradle b/spring-pulsar-reactive/spring-pulsar-reactive.gradle index 5f2ef995..9edccb57 100644 --- a/spring-pulsar-reactive/spring-pulsar-reactive.gradle +++ b/spring-pulsar-reactive/spring-pulsar-reactive.gradle @@ -1,5 +1,3 @@ -import io.spring.javaformat.gradle.tasks.CheckFormat - plugins { id 'org.springframework.pulsar.spring-module' alias(libs.plugins.protobuf) @@ -7,23 +5,7 @@ plugins { description = 'Spring Pulsar Reactive Support' -tasks.named('extractIncludeProto') { enabled = false } -tasks.named('extractIncludeTestProto') { enabled = false } - -tasks.withType(CheckFormat).configureEach { task -> - task.source = project.files( - task.source.filter { file -> - !file.path.contains('build/generated/source/proto') - task.enabled = false - } - ) -} - -protobuf { - protoc { - artifact = libs.protobuf.protoc.get() - } -} +apply from: '../gradle/proto-conventions.gradle' dependencies { api project (':spring-pulsar') diff --git a/spring-pulsar/spring-pulsar.gradle b/spring-pulsar/spring-pulsar.gradle index 4b340562..5d9316a6 100644 --- a/spring-pulsar/spring-pulsar.gradle +++ b/spring-pulsar/spring-pulsar.gradle @@ -1,5 +1,3 @@ -import io.spring.javaformat.gradle.tasks.CheckFormat - plugins { id 'org.springframework.pulsar.spring-module' id 'java-test-fixtures' @@ -8,24 +6,7 @@ plugins { description = 'Spring Pulsar Core' -tasks.named('extractIncludeProto') { enabled = false } -tasks.named('extractIncludeTestProto') { enabled = false } -tasks.named('extractIncludeTestFixturesProto') { enabled = false } - -tasks.withType(CheckFormat).configureEach { task -> - task.source = project.files( - task.source.filter { file -> - !file.path.contains('build/generated/source/proto') - task.enabled = false - } - ) -} - -protobuf { - protoc { - artifact = libs.protobuf.protoc.get() - } -} +apply from: '../gradle/proto-conventions.gradle' dependencies { api 'io.micrometer:micrometer-observation' @@ -78,4 +59,3 @@ dependencies { // Used by UserRecordDe/serializer in test fixtures testFixturesApi 'com.fasterxml.jackson.core:jackson-databind' } -