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

Guillaume Boué commented on SUREFIRE-1376:
------------------------------------------

[~tibor17] That would be great.
I think the path to the test project needs to be created at runtime, so that 
the actual absolute path to the test project is created by JRE which handles 
long paths already. For the execution part, probably we can reuse Maven shared 
utils {{CommandLineUtils}} to launch {{mvn}} ourselves and check error stream.

> "The forked VM terminated without properly saying goodbye" when running 
> Surefire in a very deep project structure on Windows
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: SUREFIRE-1376
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-1376
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: Maven Failsafe Plugin, Maven Surefire Plugin
>    Affects Versions: 2.20
>         Environment: Windows
>            Reporter: Guillaume Boué
>            Assignee: Tibor Digana
>             Fix For: 2.20.1
>
>         Attachments: SUREFIRE-1376-prefix.patch
>
>
> When Surefire is ran on a project under a very long path (exceeding Windows' 
> {{MAX_PATH}}), the invocation fails with
> {noformat}
> org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM 
> terminated without properly saying goodbye. VM crash or System.exit called?
> {noformat}
> In the generated dumpstream, there is
> {noformat}
> # Created on 2017-05-28T10:17:09.474
> Error: Unable to access jarfile 
> C:\Users\Guillaume\Desktop\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\target\surefire\surefirebooter2512478076549179739.jar
> {noformat}
> The problem is that the path to the JAR file exceeds the maximum path length 
> of 260 characters, and so it cannot be accessed.
> Prepending the path to the JAR file with {{\\?\}}, [as documented 
> on 
> MSDN|https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#maxpath], 
> makes the test run again correctly. I've attached a possible patch with this 
> approach (SUREFIRE-1376-prefix.patch, that also handles UNC pathnames), but 
> perhaps there is a better way to tackle this problem.
> In order to reproduce this, it is possible to create a project under lots of 
> different subdirectories, something like:
> {noformat}
> └───surefire-longpath-test-with-windows
>     └───surefire-longpath-test-with-windows
>         └───surefire-longpath-test-with-windows
>             └───surefire-longpath-test-with-windows
>                 └───surefire-longpath-test-with-windows
>                     │   pom.xml
>                     │
>                     └───src
>                         └───test
>                             └───java
>                                 └───Test.java
> {noformat}
> As a side-note, this issue is behind the current Jenkins failures on 
> [maven-plugins-ITs-m3.1.x-with-maven-plugin-jdk-1.8_windows|https://builds.apache.org/job/maven-plugins-ITs-m3.1.x-with-maven-plugin-jdk-1.8_windows/3702/]
>  when running the ITs on the Assembly Plugin.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to