This is an automated email from the ASF dual-hosted git repository. cstamas pushed a commit to branch maven-3.9.x in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/maven-3.9.x by this push: new 23a3a9127 [MNG-7795] IllegalArgumentException: 'other' has different root during plugin validation (#1128) 23a3a9127 is described below commit 23a3a9127de3071de0787754ba1afdd6b2eebb66 Author: Andreas Dangel <andreas.dan...@adangel.org> AuthorDate: Thu Jun 1 19:05:07 2023 +0200 [MNG-7795] IllegalArgumentException: 'other' has different root during plugin validation (#1128) Checks the paths before relativizing them. Normalize and relative before adding to result Rename local vars Apply to ExecutionEventLogger --- https://issues.apache.org/jira/browse/MNG-7795 --- .../internal/DefaultPluginValidationManager.java | 26 +++++++++++++--------- .../maven/cli/event/ExecutionEventLogger.java | 9 ++++++-- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java index bf4122fa2..e72175d03 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java @@ -22,6 +22,7 @@ import javax.inject.Named; import javax.inject.Singleton; import java.io.File; +import java.nio.file.Path; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -261,16 +262,14 @@ public final class DefaultPluginValidationManager extends AbstractEventSpy imple if (location.contains("://")) { stringBuilder.append(" (").append(location).append(")"); } else { - File rootBasedir = mavenSession.getTopLevelProject().getBasedir(); - File locationFile = new File(location); - if (location.startsWith(rootBasedir.getPath())) { - stringBuilder - .append(" (") - .append(rootBasedir.toPath().relativize(locationFile.toPath())) - .append(")"); - } else { - stringBuilder.append(" (").append(location).append(")"); + Path topLevelBasedir = + mavenSession.getTopLevelProject().getBasedir().toPath(); + Path locationPath = + new File(location).toPath().toAbsolutePath().normalize(); + if (locationPath.startsWith(topLevelBasedir)) { + locationPath = topLevelBasedir.relativize(locationPath); } + stringBuilder.append(" (").append(locationPath).append(")"); } } stringBuilder.append(" @ line ").append(inputLocation.getLineNumber()); @@ -285,8 +284,13 @@ public final class DefaultPluginValidationManager extends AbstractEventSpy imple String result = prj.getGroupId() + ":" + prj.getArtifactId() + ":" + prj.getVersion(); File currentPom = prj.getFile(); if (currentPom != null) { - File rootBasedir = mavenSession.getTopLevelProject().getBasedir(); - result += " (" + rootBasedir.toPath().relativize(currentPom.toPath()) + ")"; + Path topLevelBasedir = + mavenSession.getTopLevelProject().getBasedir().toPath(); + Path current = currentPom.toPath().toAbsolutePath().normalize(); + if (current.startsWith(topLevelBasedir)) { + current = topLevelBasedir.relativize(current); + } + result += " (" + current + ")"; } return result; } diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java b/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java index 893ff8a20..f7e2b4863 100644 --- a/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java +++ b/maven-embedder/src/main/java/org/apache/maven/cli/event/ExecutionEventLogger.java @@ -19,6 +19,7 @@ package org.apache.maven.cli.event; import java.io.File; +import java.nio.file.Path; import java.util.List; import java.util.Objects; @@ -296,8 +297,12 @@ public class ExecutionEventLogger extends AbstractExecutionListener { File currentPom = project.getFile(); if (currentPom != null) { MavenSession session = event.getSession(); - File rootBasedir = session.getTopLevelProject().getBasedir(); - logger.info(" from " + rootBasedir.toPath().relativize(currentPom.toPath())); + Path topLevelBasedir = session.getTopLevelProject().getBasedir().toPath(); + Path current = currentPom.toPath().toAbsolutePath().normalize(); + if (current.startsWith(topLevelBasedir)) { + current = topLevelBasedir.relativize(current); + } + logger.info(" from " + current); } // ----------[ packaging ]----------