From 5d81148c4db4524b3acd6a647010e5301005a86e 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 internal LazyPublishArtifact --- .../boot/gradle/plugin/JavaPluginAction.java | 4 +--- .../plugin/SinglePublishedArtifact.java | 24 ++++++++++++------- .../boot/gradle/plugin/SpringBootPlugin.java | 3 ++- .../boot/gradle/plugin/WarPluginAction.java | 4 +--- 4 files changed, 19 insertions(+), 16 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 70378e3ef1b4..d7584382dce6 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 @@ -33,7 +33,6 @@ 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; @@ -125,8 +124,7 @@ private void configureBootBuildImageTask(Project project, TaskProvider } private void configureArtifactPublication(TaskProvider bootJar) { - LazyPublishArtifact artifact = new LazyPublishArtifact(bootJar); - this.singlePublishedArtifact.addCandidate(artifact); + this.singlePublishedArtifact.addCandidate(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 31d13fe6e72a..07976fde7413 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,13 @@ 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.AbstractArchiveTask; /** * A wrapper for a {@link PublishArtifactSet} that ensures that only a single artifact is @@ -30,25 +34,27 @@ */ 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 addCandidate(PublishArtifact candidate) { - if (this.currentArtifact == null || "war".equals(candidate.getExtension())) { - this.artifacts.remove(this.currentArtifact); - this.artifacts.add(candidate); - this.currentArtifact = candidate; + void addCandidate(TaskProvider candidate) { + if (this.currentArtifact == null || "war".equals(candidate.get().getArchiveExtension().get())) { + this.configuration.getArtifacts().remove(this.currentArtifact); + this.currentArtifact = this.handler.add(this.configuration.getName(), candidate); } } @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 0de213cc66bc..b269061df6a1 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 @@ -115,7 +115,8 @@ private Configuration createBootArchivesConfiguration(Project project) { } private void registerPluginActions(Project project, Configuration bootArchives) { - SinglePublishedArtifact singlePublishedArtifact = new SinglePublishedArtifact(bootArchives.getArtifacts()); + SinglePublishedArtifact singlePublishedArtifact = new SinglePublishedArtifact(bootArchives, + project.getArtifacts()); List actions = Arrays.asList(new JavaPluginAction(singlePublishedArtifact), new WarPluginAction(singlePublishedArtifact), new MavenPluginAction(bootArchives.getUploadTaskName()), new DependencyManagementPluginAction(), new ApplicationPluginAction(), new KotlinPluginAction()); 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 c9b15cee00a6..a1aed94b41a5 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 @@ -23,7 +23,6 @@ import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.file.FileCollection; import org.gradle.api.file.RegularFile; -import org.gradle.api.internal.artifacts.dsl.LazyPublishArtifact; import org.gradle.api.plugins.BasePlugin; import org.gradle.api.plugins.WarPlugin; import org.gradle.api.tasks.TaskProvider; @@ -88,8 +87,7 @@ private FileCollection providedRuntimeConfiguration(Project project) { } private void configureArtifactPublication(TaskProvider bootWar) { - LazyPublishArtifact artifact = new LazyPublishArtifact(bootWar); - this.singlePublishedArtifact.addCandidate(artifact); + this.singlePublishedArtifact.addCandidate(bootWar); } }