You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2023/06/01 17:05:54 UTC
[maven] branch master updated: [MNG-7795] IllegalArgumentException: 'other' has different root during plugin validation (#1133)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new b2953c52d [MNG-7795] IllegalArgumentException: 'other' has different root during plugin validation (#1133)
b2953c52d is described below
commit b2953c52d5019213e55d6031fcec132707a2ef3e
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Jun 1 19:05:48 2023 +0200
[MNG-7795] IllegalArgumentException: 'other' has different root during plugin validation (#1133)
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
Co-authored-by: Andreas Dangel <ad...@apache.org>
---
.../internal/DefaultPluginValidationManager.java | 24 ++++++++++++----------
.../maven/cli/event/ExecutionEventLogger.java | 9 ++++++--
.../maven/cli/event/ExecutionEventLoggerTest.java | 2 ++
3 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..736cd77b1 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,8 @@ import javax.inject.Named;
import javax.inject.Singleton;
import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -261,16 +263,12 @@ 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 topDirectory = mavenSession.getTopDirectory();
+ Path locationPath = Paths.get(location).toAbsolutePath().normalize();
+ if (locationPath.startsWith(topDirectory)) {
+ locationPath = topDirectory.relativize(locationPath);
}
+ stringBuilder.append(" (").append(locationPath).append(")");
}
}
stringBuilder.append(" @ line ").append(inputLocation.getLineNumber());
@@ -285,8 +283,12 @@ 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 topDirectory = mavenSession.getTopDirectory();
+ Path current = currentPom.toPath().toAbsolutePath().normalize();
+ if (current.startsWith(topDirectory)) {
+ current = topDirectory.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 ca5554339..ae591850b 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;
@@ -336,8 +337,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 topDirectory = session.getTopDirectory();
+ Path current = currentPom.toPath().toAbsolutePath().normalize();
+ if (current.startsWith(topDirectory)) {
+ current = topDirectory.relativize(current);
+ }
+ logger.info(" from " + current);
}
// ----------[ packaging ]----------
diff --git a/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java b/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java
index 7e830f45c..59b8dc282 100644
--- a/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java
+++ b/maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java
@@ -80,6 +80,7 @@ class ExecutionEventLoggerTest {
when(rootProject.getBasedir()).thenReturn(basedir);
MavenSession session = mock(MavenSession.class);
when(session.getTopLevelProject()).thenReturn(rootProject);
+ when(session.getTopDirectory()).thenReturn(basedir.toPath());
when(event.getSession()).thenReturn(session);
// execute
@@ -112,6 +113,7 @@ class ExecutionEventLoggerTest {
MavenSession session = mock(MavenSession.class);
when(session.getTopLevelProject()).thenReturn(project);
when(event.getSession()).thenReturn(session);
+ when(session.getTopDirectory()).thenReturn(basedir.toPath());
// execute
executionEventLogger.projectStarted(event);