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();
     }
 

Reply via email to