From 50b54f916f28f6eedc1a499080f72fc6c182074b Mon Sep 17 00:00:00 2001 From: Chris Bono Date: Thu, 25 May 2023 21:45:03 -0500 Subject: [PATCH] [Build] Add abstract base plugin for module and docs plugins --- .../gradle/AbstractSpringModulePlugin.java | 49 +++++++++++++++++++ .../pulsar/gradle/SpringDocsModulePlugin.java | 27 +--------- .../pulsar/gradle/SpringModulePlugin.java | 28 +---------- .../gradle/publish/SpringMavenPlugin.java | 21 ++++++++ 4 files changed, 74 insertions(+), 51 deletions(-) create mode 100644 buildSrc/src/main/java/org/springframework/pulsar/gradle/AbstractSpringModulePlugin.java create mode 100644 buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/SpringMavenPlugin.java diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/AbstractSpringModulePlugin.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/AbstractSpringModulePlugin.java new file mode 100644 index 00000000..09347bb9 --- /dev/null +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/AbstractSpringModulePlugin.java @@ -0,0 +1,49 @@ +/* + * Copyright 2022-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.pulsar.gradle; + +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.plugins.JavaLibraryPlugin; +import org.gradle.api.plugins.JavaPlugin; +import org.gradle.api.plugins.PluginManager; + +import org.springframework.pulsar.gradle.optional.OptionalDependenciesPlugin; +import org.springframework.pulsar.gradle.publish.SpringMavenPlugin; + +import io.spring.gradle.convention.RepositoryConventionPlugin; + +/** + * @author Chris Bono + */ +public abstract class AbstractSpringModulePlugin implements Plugin { + + @Override + public void apply(final Project project) { + PluginManager pluginManager = project.getPluginManager(); + pluginManager.apply(JavaPlugin.class); + pluginManager.apply(JavaLibraryPlugin.class); + pluginManager.apply(RepositoryConventionPlugin.class); + pluginManager.apply(SpringMavenPlugin.class); + pluginManager.apply(JavaConventionsPlugin.class); + pluginManager.apply(OptionalDependenciesPlugin.class); + additionalPlugins(project); + } + + protected abstract void additionalPlugins(Project project); + +} diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/SpringDocsModulePlugin.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/SpringDocsModulePlugin.java index c91f6005..68fe70ff 100644 --- a/buildSrc/src/main/java/org/springframework/pulsar/gradle/SpringDocsModulePlugin.java +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/SpringDocsModulePlugin.java @@ -16,42 +16,19 @@ package org.springframework.pulsar.gradle; -import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.plugins.JavaLibraryPlugin; -import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.PluginManager; -import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; import org.springframework.pulsar.gradle.docs.AsciidoctorConventionsPlugin; -import org.springframework.pulsar.gradle.optional.OptionalDependenciesPlugin; -import org.springframework.pulsar.gradle.publish.MavenPublishingConventionsPlugin; -import org.springframework.pulsar.gradle.publish.PublishArtifactsPlugin; -import org.springframework.pulsar.gradle.publish.PublishLocalPlugin; -import org.springframework.pulsar.gradle.publish.SpringSigningPlugin; - -import io.spring.gradle.convention.ArtifactoryPlugin; -import io.spring.gradle.convention.RepositoryConventionPlugin; /** * @author Chris Bono */ -public class SpringDocsModulePlugin implements Plugin { +public class SpringDocsModulePlugin extends AbstractSpringModulePlugin { @Override - public void apply(final Project project) { + protected void additionalPlugins(Project project) { PluginManager pluginManager = project.getPluginManager(); - pluginManager.apply(JavaPlugin.class); - pluginManager.apply(RepositoryConventionPlugin.class); - pluginManager.apply(JavaLibraryPlugin.class); - pluginManager.apply(JavaConventionsPlugin.class); pluginManager.apply(AsciidoctorConventionsPlugin.class); - pluginManager.apply(MavenPublishPlugin.class); - pluginManager.apply(SpringSigningPlugin.class); - pluginManager.apply(MavenPublishingConventionsPlugin.class); - pluginManager.apply(PublishLocalPlugin.class); - pluginManager.apply(PublishArtifactsPlugin.class); - pluginManager.apply(ArtifactoryPlugin.class); - pluginManager.apply(OptionalDependenciesPlugin.class); } } diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/SpringModulePlugin.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/SpringModulePlugin.java index 44952da4..719ac130 100644 --- a/buildSrc/src/main/java/org/springframework/pulsar/gradle/SpringModulePlugin.java +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/SpringModulePlugin.java @@ -16,45 +16,21 @@ package org.springframework.pulsar.gradle; -import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.plugins.JavaLibraryPlugin; -import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.PluginManager; -import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; import org.springframework.pulsar.gradle.check.JacocoConventionsPlugin; -import org.springframework.pulsar.gradle.optional.OptionalDependenciesPlugin; -import org.springframework.pulsar.gradle.publish.MavenPublishingConventionsPlugin; import org.springframework.pulsar.gradle.publish.PublishAllJavaComponentsPlugin; -import org.springframework.pulsar.gradle.publish.PublishArtifactsPlugin; -import org.springframework.pulsar.gradle.publish.PublishLocalPlugin; -import org.springframework.pulsar.gradle.publish.SpringSigningPlugin; - -import io.spring.gradle.convention.ArtifactoryPlugin; -import io.spring.gradle.convention.RepositoryConventionPlugin; /** * @author Chris Bono */ -public class SpringModulePlugin implements Plugin { +public class SpringModulePlugin extends AbstractSpringModulePlugin { @Override - public void apply(final Project project) { - + protected void additionalPlugins(Project project) { PluginManager pluginManager = project.getPluginManager(); - pluginManager.apply(JavaPlugin.class); - pluginManager.apply(RepositoryConventionPlugin.class); - pluginManager.apply(JavaLibraryPlugin.class); - pluginManager.apply(JavaConventionsPlugin.class); - pluginManager.apply(MavenPublishPlugin.class); - pluginManager.apply(SpringSigningPlugin.class); - pluginManager.apply(MavenPublishingConventionsPlugin.class); pluginManager.apply(PublishAllJavaComponentsPlugin.class); - pluginManager.apply(PublishLocalPlugin.class); - pluginManager.apply(PublishArtifactsPlugin.class); - pluginManager.apply(ArtifactoryPlugin.class); - pluginManager.apply(OptionalDependenciesPlugin.class); pluginManager.apply(JacocoConventionsPlugin.class); } } diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/SpringMavenPlugin.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/SpringMavenPlugin.java new file mode 100644 index 00000000..6378ad7e --- /dev/null +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/SpringMavenPlugin.java @@ -0,0 +1,21 @@ +package org.springframework.pulsar.gradle.publish; + +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.plugins.PluginManager; +import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; + +import io.spring.gradle.convention.ArtifactoryPlugin; + +public class SpringMavenPlugin implements Plugin { + @Override + public void apply(Project project) { + PluginManager pluginManager = project.getPluginManager(); + pluginManager.apply(MavenPublishPlugin.class); + pluginManager.apply(SpringSigningPlugin.class); + pluginManager.apply(MavenPublishingConventionsPlugin.class); + pluginManager.apply(PublishLocalPlugin.class); + pluginManager.apply(PublishArtifactsPlugin.class); + pluginManager.apply(ArtifactoryPlugin.class); + } +}