You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2024/10/27 16:18:05 UTC
(maven-artifact-plugin) 03/03: [MARTIFACT-74] always diagnose outputTimestamp
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 <hb...@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();
}