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/12/21 23:03:44 UTC
(maven-artifact-plugin) 01/01: [MARTIFACT-78] diagnose reactor root and first
This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to branch MARTIFACT-78
in repository https://gitbox.apache.org/repos/asf/maven-artifact-plugin.git
commit 5b81b72cf21c80d70beac43141f81da3485a092a
Author: Hervé Boutemy <hb...@apache.org>
AuthorDate: Sun Dec 22 00:03:29 2024 +0100
[MARTIFACT-78] diagnose reactor root and first
---
.../artifact/buildinfo/AbstractBuildinfoMojo.java | 48 +++++++++++-----------
.../artifact/buildinfo/CheckBuildPlanMojo.java | 4 +-
.../plugins/artifact/buildinfo/CompareMojo.java | 4 +-
.../buildinfo/DescribeBuildOutputMojo.java | 4 +-
4 files changed, 29 insertions(+), 31 deletions(-)
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 51b0e0e..e108083 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
@@ -153,7 +153,7 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo {
public void execute() throws MojoExecutionException {
boolean mono = session.getProjects().size() == 1;
- hasBadOutputTimestamp(outputTimestamp, getLog(), project, session.getProjects(), diagnose);
+ hasBadOutputTimestamp(outputTimestamp, getLog(), project, session, diagnose);
if (!mono) {
// if module skips install and/or deploy
@@ -179,17 +179,13 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo {
}
static boolean hasBadOutputTimestamp(
- String outputTimestamp,
- Log log,
- MavenProject project,
- List<MavenProject> reactorProjects,
- boolean diagnose) {
+ String outputTimestamp, Log log, MavenProject project, MavenSession session, boolean diagnose) {
Instant timestamp =
MavenArchiver.parseBuildOutputTimestamp(outputTimestamp).orElse(null);
String effective = ((timestamp == null) ? "disabled" : DateTimeFormatter.ISO_INSTANT.format(timestamp));
if (diagnose) {
- diagnose(outputTimestamp, log, project, reactorProjects, effective);
+ diagnose(outputTimestamp, log, project, session, effective);
}
if (timestamp == null) {
@@ -215,7 +211,7 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo {
// check if timestamp defined in a project from reactor: info if it is not the case
boolean parentInReactor = false;
MavenProject reactorParent = project;
- while (reactorProjects.contains(reactorParent.getParent())) {
+ while (session.getProjects().contains(reactorParent.getParent())) {
parentInReactor = true;
reactorParent = reactorParent.getParent();
}
@@ -231,11 +227,18 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo {
}
static void diagnose(
- String outputTimestamp,
- Log log,
- MavenProject project,
- List<MavenProject> reactorProjects,
- String effective) {
+ String outputTimestamp, Log log, MavenProject project, MavenSession session, String effective) {
+ if (session.getProjects().size() > 1) {
+ log.info("reactor executionRoot = " + session.getTopLevelProject().getId());
+ log.info("reactor first = " + session.getProjects().get(0).getId());
+ MavenProject parent = session.getProjects().get(0).getParent();
+ log.info("reactor first parent = " + ((parent == null) ? parent : parent.getId()));
+ if (parent != null && session.getProjects().contains(parent)) {
+ // should not happen...
+ log.warn("reactor first parent = " + parent.getId() + " is in reactor");
+ }
+ }
+
log.info("outputTimestamp = " + outputTimestamp
+ (effective.equals(outputTimestamp) ? "" : (" => " + effective)));
@@ -254,6 +257,10 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo {
+ " - project.build.outputTimestamp property from project original model = "
+ originalModelProperty);
+ if (outputTimestamp == null) {
+ return;
+ }
+
MavenProject parent = project.getParent();
if (parent != null) {
StringBuilder sb = new StringBuilder("Inheritance analysis property:" + System.lineSeparator()
@@ -261,7 +268,7 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo {
while (parent != null) {
String parentProperty = parent.getProperties().getProperty("project.build.outputTimestamp");
sb.append(System.lineSeparator());
- sb.append(" - " + (reactorProjects.contains(parent) ? "reactor" : "external") + " parent "
+ sb.append(" - " + (session.getProjects().contains(parent) ? "reactor" : "external") + " parent "
+ parent.getId() + " property = " + parentProperty);
if (!projectProperty.equals(parentProperty)) {
break;
@@ -291,7 +298,7 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo {
}
// copy aggregate file to root target directory
- MavenProject root = getExecutionRoot();
+ MavenProject root = session.getTopLevelProject();
String extension = aggregate.getName().substring(aggregate.getName().lastIndexOf('.'));
File rootCopy =
new File(root.getBuild().getDirectory(), root.getArtifactId() + '-' + root.getVersion() + extension);
@@ -325,7 +332,7 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo {
* @throws MojoExecutionException if anything goes wrong
*/
protected Map<Artifact, String> generateBuildinfo(boolean mono) throws MojoExecutionException {
- MavenProject root = mono ? project : getExecutionRoot();
+ MavenProject root = mono ? project : session.getTopLevelProject();
buildinfoFile.getParentFile().mkdirs();
@@ -355,15 +362,6 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo {
}
}
- protected MavenProject getExecutionRoot() {
- for (MavenProject p : session.getAllProjects()) {
- if (p.isExecutionRoot()) {
- return p;
- }
- }
- return null;
- }
-
private MavenProject getLastProject() {
int i = session.getProjects().size();
while (i > 0) {
diff --git a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CheckBuildPlanMojo.java b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CheckBuildPlanMojo.java
index 00a2fab..fc7eca7 100644
--- a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CheckBuildPlanMojo.java
+++ b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CheckBuildPlanMojo.java
@@ -108,8 +108,8 @@ public class CheckBuildPlanMojo extends AbstractMojo {
@Override
public void execute() throws MojoExecutionException {
- boolean fail = AbstractBuildinfoMojo.hasBadOutputTimestamp(
- outputTimestamp, getLog(), project, session.getProjects(), diagnose);
+ boolean fail =
+ AbstractBuildinfoMojo.hasBadOutputTimestamp(outputTimestamp, getLog(), project, session, diagnose);
// TODO check maven-jar-plugin module-info.class?
diff --git a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
index b7a4277..bda4391 100644
--- a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
+++ b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
@@ -137,7 +137,7 @@ public class CompareMojo extends AbstractBuildinfoMojo {
* @throws MojoExecutionException if anything goes wrong
*/
private void checkAgainstReference(Map<Artifact, String> artifacts, boolean mono) throws MojoExecutionException {
- MavenProject root = mono ? project : getExecutionRoot();
+ MavenProject root = mono ? project : session.getTopLevelProject();
File referenceDir = new File(root.getBuild().getDirectory(), "reference");
referenceDir.mkdirs();
@@ -301,7 +301,7 @@ public class CompareMojo extends AbstractBuildinfoMojo {
}
private String relative(File file) {
- File basedir = getExecutionRoot().getBasedir();
+ File basedir = session.getTopLevelProject().getBasedir();
int length = basedir.getPath().length();
String path = file.getPath();
return path.substring(length + 1);
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 ae7362f..a1d1c5f 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
@@ -72,7 +72,7 @@ public class DescribeBuildOutputMojo extends AbstractBuildinfoMojo {
MavenArchiver.parseBuildOutputTimestamp(outputTimestamp).orElse(null);
String effective = ((timestamp == null) ? "disabled" : DateTimeFormatter.ISO_INSTANT.format(timestamp));
- diagnose(outputTimestamp, getLog(), project, session.getProjects(), effective);
+ diagnose(outputTimestamp, getLog(), project, session, effective);
getLog().info("");
describeBuildOutput();
}
@@ -81,7 +81,7 @@ public class DescribeBuildOutputMojo extends AbstractBuildinfoMojo {
private BuildInfoWriter bi;
private void describeBuildOutput() throws MojoExecutionException {
- rootPath = getExecutionRoot().getBasedir().toPath();
+ rootPath = session.getTopLevelProject().getBasedir().toPath();
bi = newBuildInfoWriter(null, false);
Map<String, Long> groupIds = session.getProjects().stream()