Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.0.7
-
None
Description
There is a bug in the mvn.bat script that prevents that an error code is properly returned to the caller of the script.
The batch script executes the following lines after maven has been invoked if an error occurs:
if ERRORLEVEL 1 goto error
:error
set ERROR_CODE=1
:end
if "%OS%"=="Windows_NT" goto endNT
:endNT
@endlocal
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%
The problem is the endlocal statement. Calling endlocal ends the scope in which ERROR_CODE was set to 1. The previous value of ERROR_CODE will be reinstantiated (which is always 0, see line 46).
To fix the problem make the ERROR_CODE value known in the outer ("global") scope by changing the endlocal statement into
@endlocal & set ERROR_CODE=%ERROR_CODE%
Attachments
Issue Links
- duplicates
-
MNG-3126 mvn.bat always exits 0 on WinXP
- Closed