Skip to content

Commit 2e3ba29

Browse files
committed
[gh-11363] Compile parser to temp directory with MAVEN_HOME-based path
- Compile JvmConfigParser.java to %TEMP%\mvn-jvm-parser-<hash> - Hash is based on MAVEN_HOME to ensure different Maven versions use different compiled classes - Avoids needing write access to Maven bin directory - Avoids single-file source execution issues with output redirection
1 parent b9b8c25 commit 2e3ba29

File tree

1 file changed

+11
-2
lines changed
  • apache-maven/src/assembly/maven/bin

1 file changed

+11
-2
lines changed

apache-maven/src/assembly/maven/bin/mvn.cmd

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,18 @@ if not exist "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadJvmConfig
181181

182182
rem Use Java to parse jvm.config to avoid batch script parsing issues with special characters
183183
rem This handles pipes, quotes, and other special characters correctly
184-
rem Use single-file source-code execution (Java 11+) to avoid needing write access to bin directory
184+
rem Compile to temp directory to avoid needing write access to bin directory
185+
rem Use a hash of MAVEN_HOME to create a unique directory per Maven installation
186+
set "MAVEN_HOME_HASH=%MAVEN_HOME:\=-%"
187+
set "MAVEN_HOME_HASH=%MAVEN_HOME_HASH::=%"
188+
set "MAVEN_HOME_HASH=%MAVEN_HOME_HASH: =%"
189+
set "JVM_CONFIG_PARSER_DIR=%TEMP%\mvn-jvm-parser-%MAVEN_HOME_HASH%"
190+
if not exist "%JVM_CONFIG_PARSER_DIR%\JvmConfigParser.class" (
191+
if not exist "%JVM_CONFIG_PARSER_DIR%" mkdir "%JVM_CONFIG_PARSER_DIR%"
192+
"%JAVACMD:java.exe=javac.exe%" -d "%JVM_CONFIG_PARSER_DIR%" "%MAVEN_HOME%\bin\JvmConfigParser.java" >nul 2>&1
193+
)
185194
set "JVM_CONFIG_TEMP=%TEMP%\mvn-jvm-config-%RANDOM%.txt"
186-
"%JAVACMD%" "%MAVEN_HOME%\bin\JvmConfigParser.java" "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" "%MAVEN_PROJECTBASEDIR%" > "%JVM_CONFIG_TEMP%" 2>nul
195+
"%JAVACMD%" -cp "%JVM_CONFIG_PARSER_DIR%" JvmConfigParser "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" "%MAVEN_PROJECTBASEDIR%" > "%JVM_CONFIG_TEMP%" 2>nul
187196
rem Read the single line from temp file
188197
set /p JVM_CONFIG_MAVEN_OPTS=<"%JVM_CONFIG_TEMP%"
189198
del "%JVM_CONFIG_TEMP%" 2>nul

0 commit comments

Comments
 (0)