This is an automated email from the ASF dual-hosted git repository. hboutemy pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-artifact-plugin.git
commit 1f366a929854ce29883d5a2eeead62e410ee4340 Author: Hervé Boutemy <hbout...@apache.org> AuthorDate: Mon Oct 21 18:30:00 2024 +0100 [MARTIFACT-74] always diagnose outputTimestamp --- src/it/describe-multi/pom.xml | 1 + .../artifact/buildinfo/AbstractBuildinfoMojo.java | 79 ++++++++++++---------- .../buildinfo/DescribeBuildOutputMojo.java | 9 +++ 3 files changed, 54 insertions(+), 35 deletions(-) diff --git a/src/it/describe-multi/pom.xml b/src/it/describe-multi/pom.xml index 3902b7e..ca54fbb 100644 --- a/src/it/describe-multi/pom.xml +++ b/src/it/describe-multi/pom.xml @@ -46,6 +46,7 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.build.outputTimestamp>1234567890</project.build.outputTimestamp> <spotless.check.skip>true</spotless.check.skip> </properties> diff --git a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java index 4e90182..76f8678 100644 --- a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java +++ b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java @@ -123,7 +123,7 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo { * @since 3.2.0 */ @Parameter(defaultValue = "${project.build.outputTimestamp}") - private String outputTimestamp; + protected String outputTimestamp; /** * Diagnose {@code outputTimestamp} effective value based on execution context. @@ -182,40 +182,7 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo { String effective = ((timestamp == null) ? "disabled" : DateTimeFormatter.ISO_INSTANT.format(timestamp)); if (diagnose) { - log.info("outputTimestamp = " + outputTimestamp - + (effective.equals(outputTimestamp) ? "" : (" => " + effective))); - - String projectProperty = project.getProperties().getProperty("project.build.outputTimestamp"); - String modelProperty = project.getModel().getProperties().getProperty("project.build.outputTimestamp"); - String originalModelProperty = - project.getOriginalModel().getProperties().getProperty("project.build.outputTimestamp"); - - log.info("plugin outputTimestamp parameter diagnostics:" + System.lineSeparator() - + " - plugin outputTimestamp parameter (defaultValue=\"${project.build.outputTimestamp}\") = " - + outputTimestamp + System.lineSeparator() - + " - project.build.outputTimestamp property from project = " + projectProperty - + System.lineSeparator() - + " - project.build.outputTimestamp property from project model = " + modelProperty - + System.lineSeparator() - + " - project.build.outputTimestamp property from project original model = " - + originalModelProperty); - - MavenProject parent = project.getParent(); - if (parent != null) { - StringBuilder sb = new StringBuilder("Inheritance analysis property:" + System.lineSeparator() - + " - current " + project.getId() + " property = " + projectProperty); - while (parent != null) { - String parentProperty = parent.getProperties().getProperty("project.build.outputTimestamp"); - sb.append(System.lineSeparator()); - sb.append(" - " + (reactorProjects.contains(parent) ? "reactor" : "external") + " parent " - + parent.getId() + " property = " + parentProperty); - if (!projectProperty.equals(parentProperty)) { - break; - } - parent = parent.getParent(); - } - log.info(sb.toString()); - } + diagnose(outputTimestamp, log, project, reactorProjects, effective); } if (timestamp == null) { @@ -256,6 +223,48 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo { return false; } + static void diagnose( + String outputTimestamp, + Log log, + MavenProject project, + List<MavenProject> reactorProjects, + String effective) { + log.info("outputTimestamp = " + outputTimestamp + + (effective.equals(outputTimestamp) ? "" : (" => " + effective))); + + String projectProperty = project.getProperties().getProperty("project.build.outputTimestamp"); + String modelProperty = project.getModel().getProperties().getProperty("project.build.outputTimestamp"); + String originalModelProperty = + project.getOriginalModel().getProperties().getProperty("project.build.outputTimestamp"); + + log.info("plugin outputTimestamp parameter diagnostics:" + System.lineSeparator() + + " - plugin outputTimestamp parameter (defaultValue=\"${project.build.outputTimestamp}\") = " + + outputTimestamp + System.lineSeparator() + + " - project.build.outputTimestamp property from project = " + projectProperty + + System.lineSeparator() + + " - project.build.outputTimestamp property from project model = " + modelProperty + + System.lineSeparator() + + " - project.build.outputTimestamp property from project original model = " + + originalModelProperty); + + MavenProject parent = project.getParent(); + if (parent != null) { + StringBuilder sb = new StringBuilder("Inheritance analysis property:" + System.lineSeparator() + + " - current " + project.getId() + " property = " + projectProperty); + while (parent != null) { + String parentProperty = parent.getProperties().getProperty("project.build.outputTimestamp"); + sb.append(System.lineSeparator()); + sb.append(" - " + (reactorProjects.contains(parent) ? "reactor" : "external") + " parent " + + parent.getId() + " property = " + parentProperty); + if (!projectProperty.equals(parentProperty)) { + break; + } + parent = parent.getParent(); + } + log.info(sb.toString()); + } + } + /** * Execute after buildinfo has been generated for current build (eventually aggregated). * diff --git a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/DescribeBuildOutputMojo.java b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/DescribeBuildOutputMojo.java index 3fadd63..88f6681 100644 --- a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/DescribeBuildOutputMojo.java +++ b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/DescribeBuildOutputMojo.java @@ -25,6 +25,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; +import java.time.Instant; +import java.time.format.DateTimeFormatter; import java.util.Comparator; import java.util.Map; import java.util.Set; @@ -32,6 +34,7 @@ import java.util.stream.Collectors; import org.apache.commons.codec.digest.DigestUtils; import org.apache.maven.RepositoryUtils; +import org.apache.maven.archiver.MavenArchiver; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.project.MavenProject; @@ -51,6 +54,12 @@ public class DescribeBuildOutputMojo extends AbstractBuildinfoMojo { @Override public void execute() throws MojoExecutionException { // super.execute(); // do not generate buildinfo, just reuse logic from abstract class + Instant timestamp = + MavenArchiver.parseBuildOutputTimestamp(outputTimestamp).orElse(null); + String effective = ((timestamp == null) ? "disabled" : DateTimeFormatter.ISO_INSTANT.format(timestamp)); + + diagnose(outputTimestamp, getLog(), project, session.getProjects(), effective); + getLog().info(""); describeBuildOutput(); }