Skip to content

Commit b384725

Browse files
gnodetclaude
andauthored
Fix #12464: Skip MAVEN_ARGS for non-default main classes (--up, --enc, --shell) (#12465) (#12466)
When MAVEN_MAIN_CLASS is not the default MavenCling (i.e., when using --up, --enc, or --shell), skip prepending $MAVEN_ARGS to the command line. MAVEN_ARGS may contain build-specific flags like -ntp, -T4, -U that are not recognized by MavenUpCling, MavenEncCling, or MavenShellCling. The handle_args function already sets MAVEN_MAIN_CLASS for these sub-commands — use that to gate MAVEN_ARGS inclusion. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent db9adc3 commit b384725

2 files changed

Lines changed: 16 additions & 2 deletions

File tree

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,10 +290,20 @@ cmd="\"$JAVACMD\" \
290290

291291
if [ -n "$MAVEN_DEBUG_SCRIPT" ]; then
292292
echo "[DEBUG] Launching JVM with command:" >&2
293-
printf '[DEBUG] %s' "$cmd" >&2; printf ' %s' "$MAVEN_ARGS" >&2; printf ' "%s"' "$@" >&2; echo >&2
293+
printf '[DEBUG] %s' "$cmd" >&2
294+
if [ "$MAVEN_MAIN_CLASS" = "org.apache.maven.cling.MavenCling" ]; then
295+
printf ' %s' "$MAVEN_ARGS" >&2
296+
fi
297+
printf ' "%s"' "$@" >&2; echo >&2
294298
fi
295299

296300
# User arguments ("$@") and MAVEN_ARGS are passed outside the eval'd string
297301
# to preserve literal values (backslashes, ${...} placeholders) without
298302
# shell re-parsing. Only the base command uses eval for MAVEN_OPTS word splitting.
299-
eval exec "$cmd" '$MAVEN_ARGS' '"$@"'
303+
# MAVEN_ARGS is only passed for the default Maven build command (MavenCling),
304+
# not for sub-commands like --up, --enc, or --shell which have their own options.
305+
if [ "$MAVEN_MAIN_CLASS" = "org.apache.maven.cling.MavenCling" ]; then
306+
eval exec "$cmd" '$MAVEN_ARGS' '"$@"'
307+
else
308+
eval exec "$cmd" '"$@"'
309+
fi

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,10 @@ for %%i in ("%MAVEN_HOME%"\boot\plexus-classworlds-*) do set LAUNCHER_JAR="%%i"
291291
set LAUNCHER_CLASS=org.codehaus.plexus.classworlds.launcher.Launcher
292292
if "%MAVEN_MAIN_CLASS%"=="" @set MAVEN_MAIN_CLASS=org.apache.maven.cling.MavenCling
293293

294+
@REM Only pass MAVEN_ARGS for the default Maven build command (MavenCling),
295+
@REM not for sub-commands like --up, --enc, or --shell which have their own options.
296+
if not "%MAVEN_MAIN_CLASS%"=="org.apache.maven.cling.MavenCling" set "MAVEN_ARGS="
297+
294298
if defined MAVEN_DEBUG_SCRIPT (
295299
echo [DEBUG] Launching JVM with command:
296300
echo [DEBUG] "%JAVACMD%" %INTERNAL_MAVEN_OPTS% %MAVEN_OPTS% %JVM_CONFIG_MAVEN_OPTS% %MAVEN_DEBUG_OPTS% --enable-native-access=ALL-UNNAMED -classpath %LAUNCHER_JAR% "-Dclassworlds.conf=%CLASSWORLDS_CONF%" "-Dmaven.home=%MAVEN_HOME%" "-Dmaven.mainClass=%MAVEN_MAIN_CLASS%" "-Dlibrary.jline.path=%MAVEN_HOME%\lib\jline-native" "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %LAUNCHER_CLASS% %MAVEN_ARGS% %*

0 commit comments

Comments
 (0)