diff --git a/apache-maven/src/bin/mvn b/apache-maven/src/bin/mvn index 47dc7d7f4ed0..8869c653d8f0 100755 --- a/apache-maven/src/bin/mvn +++ b/apache-maven/src/bin/mvn @@ -172,10 +172,14 @@ find_file_argument_basedir() { ) } -# concatenates all lines of a file +# concatenates all lines of a file and replaces variables concat_lines() { if [ -f "$1" ]; then - echo "`tr -s '\r\n' ' ' < "$1"`" + # First transform line endings to spaces + content=$(tr -s '\r\n' ' ' < "$1") + # Handle both ${var} and $var formats, only substitute MAVEN_PROJECTBASEDIR + echo "$content" | sed -e "s|\${MAVEN_PROJECTBASEDIR}|$MAVEN_PROJECTBASEDIR|g" \ + -e "s|\$MAVEN_PROJECTBASEDIR|$MAVEN_PROJECTBASEDIR|g" fi } diff --git a/apache-maven/src/bin/mvn.cmd b/apache-maven/src/bin/mvn.cmd index affbe4318216..c17c6e22d96d 100644 --- a/apache-maven/src/bin/mvn.cmd +++ b/apache-maven/src/bin/mvn.cmd @@ -161,14 +161,28 @@ cd /d "%EXEC_DIR%" :endDetectBaseDir -set "jvmConfig=\.mvn\jvm.config" -if not exist "%MAVEN_PROJECTBASEDIR%%jvmConfig%" goto endReadAdditionalConfig +if not exist "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadJvmConfig @setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% +set JVM_CONFIG_MAVEN_OPTS= +for /F "usebackq tokens=* delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do ( + set "line=%%a" + + rem Replace MAVEN_PROJECTBASEDIR placeholders + set "line=!line:${MAVEN_PROJECTBASEDIR}=%MAVEN_PROJECTBASEDIR%!" + set "line=!line:$MAVEN_PROJECTBASEDIR=%MAVEN_PROJECTBASEDIR%!" + + if not "!line!"=="" ( + if "!JVM_CONFIG_MAVEN_OPTS!"=="" ( + set "JVM_CONFIG_MAVEN_OPTS=!line!" + ) else ( + set "JVM_CONFIG_MAVEN_OPTS=!JVM_CONFIG_MAVEN_OPTS! !line!" + ) + ) +) +@endlocal & set JVM_CONFIG_MAVEN_OPTS=%JVM_CONFIG_MAVEN_OPTS% -:endReadAdditionalConfig +:endReadJvmConfig @REM do not let MAVEN_PROJECTBASEDIR end with a single backslash which would escape the double quote. This happens when .mvn at drive root. if "_%MAVEN_PROJECTBASEDIR:~-1%"=="_\" set "MAVEN_PROJECTBASEDIR=%MAVEN_PROJECTBASEDIR%\" @@ -183,7 +197,7 @@ set "INTERNAL_MAVEN_OPTS=--enable-native-access=ALL-UNNAMED %INTERNAL_MAVEN_OPTS :skipEnableNativeAccess "%JAVACMD%" ^ - %JVM_CONFIG_MAVEN_PROPS% ^ + %JVM_CONFIG_MAVEN_OPTS% ^ %INTERNAL_MAVEN_OPTS% ^ %MAVEN_OPTS% ^ %MAVEN_DEBUG_OPTS% ^