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 ]----------

Reply via email to