Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-3296

mvn.bat looses error code on windows NT type platforms

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0.7
    • 2.0.9, 3.0-alpha-1
    • Command Line
    • 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

          Activity

            People

              jdcasey John Dennis Casey
              u_302321 Matthias Kerkhoff
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: