From 264a6888a9b194864f4fa7c832bca6f84ec29948 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 14 Mar 2022 20:15:32 -0700 Subject: [PATCH] Refactor code to avoid using internal LazyPublishArtifact See gh-30209 --- .../boot/gradle/plugin/JavaPluginAction.java | 4 +-- .../plugin/SinglePublishedArtifact.java | 29 ++++++++++++------- .../boot/gradle/plugin/SpringBootPlugin.java | 3 +- .../boot/gradle/plugin/WarPluginAction.java | 4 +-- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java index dc5308f482d..593a568c1e3 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java @@ -32,7 +32,6 @@ import org.gradle.api.attributes.Bundling; import org.gradle.api.attributes.LibraryElements; import org.gradle.api.attributes.Usage; import org.gradle.api.file.FileCollection; -import org.gradle.api.internal.artifacts.dsl.LazyPublishArtifact; import org.gradle.api.model.ObjectFactory; import org.gradle.api.plugins.ApplicationPlugin; import org.gradle.api.plugins.BasePlugin; @@ -132,8 +131,7 @@ final class JavaPluginAction implements PluginApplicationAction { } private void configureArtifactPublication(TaskProvider bootJar) { - LazyPublishArtifact artifact = new LazyPublishArtifact(bootJar); - this.singlePublishedArtifact.addJarCandidate(artifact); + this.singlePublishedArtifact.addJarCandidate(bootJar); } private void configureBootRunTask(Project project) { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SinglePublishedArtifact.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SinglePublishedArtifact.java index ab18a059a7e..8c9b7a6905f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SinglePublishedArtifact.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SinglePublishedArtifact.java @@ -17,9 +17,16 @@ package org.springframework.boot.gradle.plugin; import org.gradle.api.Buildable; +import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.PublishArtifact; import org.gradle.api.artifacts.PublishArtifactSet; +import org.gradle.api.artifacts.dsl.ArtifactHandler; import org.gradle.api.tasks.TaskDependency; +import org.gradle.api.tasks.TaskProvider; +import org.gradle.api.tasks.bundling.Jar; + +import org.springframework.boot.gradle.tasks.bundling.BootJar; +import org.springframework.boot.gradle.tasks.bundling.BootWar; /** * A wrapper for a {@link PublishArtifactSet} that ensures that only a single artifact is @@ -30,33 +37,35 @@ import org.gradle.api.tasks.TaskDependency; */ final class SinglePublishedArtifact implements Buildable { - private final PublishArtifactSet artifacts; + private final Configuration configuration; + + private final ArtifactHandler handler; private PublishArtifact currentArtifact; - SinglePublishedArtifact(PublishArtifactSet artifacts) { - this.artifacts = artifacts; + SinglePublishedArtifact(Configuration configuration, ArtifactHandler handler) { + this.configuration = configuration; + this.handler = handler; } - void addWarCandidate(PublishArtifact candidate) { + void addWarCandidate(TaskProvider candidate) { add(candidate); } - void addJarCandidate(PublishArtifact candidate) { + void addJarCandidate(TaskProvider candidate) { if (this.currentArtifact == null) { add(candidate); } } - private void add(PublishArtifact artifact) { - this.artifacts.remove(this.currentArtifact); - this.artifacts.add(artifact); - this.currentArtifact = artifact; + private void add(TaskProvider artifact) { + this.configuration.getArtifacts().remove(this.currentArtifact); + this.currentArtifact = this.handler.add(this.configuration.getName(), artifact); } @Override public TaskDependency getBuildDependencies() { - return this.artifacts.getBuildDependencies(); + return this.configuration.getArtifacts().getBuildDependencies(); } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java index 015d5ac46e5..0403a324ad2 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java @@ -116,7 +116,8 @@ public class SpringBootPlugin implements Plugin { } private void registerPluginActions(Project project, Configuration bootArchives) { - SinglePublishedArtifact singlePublishedArtifact = new SinglePublishedArtifact(bootArchives.getArtifacts()); + SinglePublishedArtifact singlePublishedArtifact = new SinglePublishedArtifact(bootArchives, + project.getArtifacts()); @SuppressWarnings("deprecation") List actions = Arrays.asList(new JavaPluginAction(singlePublishedArtifact), new WarPluginAction(singlePublishedArtifact), new MavenPluginAction(bootArchives.getUploadTaskName()), diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/WarPluginAction.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/WarPluginAction.java index 38199a15fab..acc9f19793f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/WarPluginAction.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/WarPluginAction.java @@ -24,7 +24,6 @@ import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.file.FileCollection; -import org.gradle.api.internal.artifacts.dsl.LazyPublishArtifact; import org.gradle.api.plugins.BasePlugin; import org.gradle.api.plugins.WarPlugin; import org.gradle.api.provider.Provider; @@ -107,8 +106,7 @@ class WarPluginAction implements PluginApplicationAction { } private void configureArtifactPublication(TaskProvider bootWar) { - LazyPublishArtifact artifact = new LazyPublishArtifact(bootWar); - this.singlePublishedArtifact.addWarCandidate(artifact); + this.singlePublishedArtifact.addWarCandidate(bootWar); } }