[ 
https://issues.apache.org/jira/browse/MNG-7795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17726532#comment-17726532
 ] 

ASF GitHub Bot commented on MNG-7795:
-------------------------------------

adangel commented on code in PR #1128:
URL: https://github.com/apache/maven/pull/1128#discussion_r1206441400


##########
maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java:
##########
@@ -247,7 +247,11 @@ private String pluginOccurrence(MavenSession mavenSession) 
{
         File currentPom = prj.getFile();
         if (currentPom != null) {
             File rootBasedir = mavenSession.getTopLevelProject().getBasedir();
-            result += " (" + 
rootBasedir.toPath().relativize(currentPom.toPath()) + ")";
+            if (currentPom.getPath().startsWith(rootBasedir.getPath())) {

Review Comment:
   > And can we make the local variable name consistent, i.e. name it 
`topBasedir` instead of `rootBasedir` ?
   
   Done.
   
   I've also updated ExecutionEventLogger. It seems, this was the only other 
place, where Path::relativize is used.





> IllegalArgumentException: 'other' has different root during plugin validation
> -----------------------------------------------------------------------------
>
>                 Key: MNG-7795
>                 URL: https://issues.apache.org/jira/browse/MNG-7795
>             Project: Maven
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 3.9.2
>            Reporter: Andreas Dangel
>            Assignee: Andreas Dangel
>            Priority: Major
>             Fix For: 3.9.3, 4.0.0-alpha-6, 4.0.0
>
>
> This bug happens under Windows only and is the reason, why one IT 
> (MPMD-323-ruleset-basedir-jgitver) is failing for m-pmd-p with the following 
> exception:
>  
> {code:java}
> java.lang.IllegalArgumentException: 'other' has different root
>     at sun.nio.fs.WindowsPath.relativize (WindowsPath.java:404)
>     at sun.nio.fs.WindowsPath.relativize (WindowsPath.java:42)
>     at 
> org.apache.maven.plugin.internal.DefaultPluginValidationManager.pluginOccurrence
>  (DefaultPluginValidationManager.java:224)
>     at 
> org.apache.maven.plugin.internal.DefaultPluginValidationManager.reportPluginValidationIssue
>  (DefaultPluginValidationManager.java:111)
>     at 
> org.apache.maven.plugin.internal.PlexusContainerDefaultDependenciesValidator.doValidate
>  (PlexusContainerDefaultDependenciesValidator.java:49)
>     at 
> org.apache.maven.plugin.internal.AbstractMavenPluginDependenciesValidator.validate
>  (AbstractMavenPluginDependenciesValidator.java:50)
>     at 
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo 
> (DefaultMavenPluginManager.java:560)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:114)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:342)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:330)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:213)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:175)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:76)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:163)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:160)
>     at 
> org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions 
> (MojoExecutor.java:462)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:325)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:213)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:175)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:76)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:163)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:160)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:73)
>     at 
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
>  (SingleThreadedBuilder.java:53)
>     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
> (LifecycleStarter.java:118)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
>     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
>     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:910)
>     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
>     at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke (Method.java:566)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
> (Launcher.java:283)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.launch 
> (Launcher.java:226)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
> (Launcher.java:407)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:348)
>  {code}
> E.g. see GitHub Actions: 
> [https://github.com/apache/maven-pmd-plugin/actions/runs/5024694265] 
> (unfortunately without a stack trace)
> This IT uses the extension 
> [jgitver-maven-plugin|https://github.com/jgitver/jgitver-maven-plugin], which 
> creates a temporary pom file for the current project with the new version 
> determined from the git status.
>  
> In 
> [https://github.com/apache/maven/blob/c9616018c7a021c1c39be70fb2843d6f5f9b8a1c/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java#L224]
> {code:java}
> result += " (" + rootBasedir.toPath().relativize(currentPom.toPath()) + ")"; 
> {code}
> rootBaseDir is e.g. 
> "X:\maven-pmd-plugin\target\it\MPMD-323-ruleset-basedir-jgitver" and 
> currentPom is e.g. "C:\Users\adang\AppData\Local\Temp". Using relativize here 
> leads to "IllegalArgumentException: 'other' has different root".
> Doesn't happen on Linux/Mac as there is only one filesystem root.
> We probably should check with 
> {{currentPom.getPath().startsWith(rootBasedir.getPath())}} before 
> relativizing it (similar to the method pluginDeclaration() above).
> I'll try to create a PR for this.
> FYI [~cstamas] - as you are working on MNG-7791 ...
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to