diff --git a/apache-maven/src/assembly/maven/bin/mvn.cmd b/apache-maven/src/assembly/maven/bin/mvn.cmd index f25f85858f7a..f6a14130772b 100644 --- a/apache-maven/src/assembly/maven/bin/mvn.cmd +++ b/apache-maven/src/assembly/maven/bin/mvn.cmd @@ -184,7 +184,20 @@ if not exist "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadJvmConfig rem Use Java source-launch mode (JDK 11+) to parse jvm.config rem This avoids batch script parsing issues with special characters (pipes, quotes, @, etc.) -rem Use temp file approach with cmd /c to ensure proper file handle release +rem Java writes parsed output to a temp file; we read it with 'set /p' + input redirect. +rem +rem Why 'set /p nul + rem Retry once after a brief delay if the read failed (Windows Defender file lock) + if not defined JVM_CONFIG_MAVEN_OPTS ( + if defined MAVEN_DEBUG_SCRIPT ( + echo [DEBUG] First read returned empty, retrying after delay... + ) + ping -n 2 127.0.0.1 >nul 2>nul + set /p JVM_CONFIG_MAVEN_OPTS=<"%JVM_CONFIG_TEMP%" 2>nul + ) del "%JVM_CONFIG_TEMP%" 2>nul )