mvnw.cmd (6608B)
1 @REM ---------------------------------------------------------------------------- 2 @REM Licensed to the Apache Software Foundation (ASF) under one 3 @REM or more contributor license agreements. See the NOTICE file 4 @REM distributed with this work for additional information 5 @REM regarding copyright ownership. The ASF licenses this file 6 @REM to you under the Apache License, Version 2.0 (the 7 @REM "License"); you may not use this file except in compliance 8 @REM with the License. You may obtain a copy of the License at 9 @REM 10 @REM https://www.apache.org/licenses/LICENSE-2.0 11 @REM 12 @REM Unless required by applicable law or agreed to in writing, 13 @REM software distributed under the License is distributed on an 14 @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 @REM KIND, either express or implied. See the License for the 16 @REM specific language governing permissions and limitations 17 @REM under the License. 18 @REM ---------------------------------------------------------------------------- 19 20 @REM ---------------------------------------------------------------------------- 21 @REM Maven Start Up Batch script 22 @REM 23 @REM Required ENV vars: 24 @REM JAVA_HOME - location of a JDK home dir 25 @REM 26 @REM Optional ENV vars 27 @REM M2_HOME - location of maven2's installed home dir 28 @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands 29 @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending 30 @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven 31 @REM e.g. to debug Maven itself, use 32 @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 33 @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files 34 @REM ---------------------------------------------------------------------------- 35 36 @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' 37 @echo off 38 @REM set title of command window 39 title %0 40 @REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' 41 @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% 42 43 @REM set %HOME% to equivalent of $HOME 44 if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") 45 46 @REM Execute a user defined script before this one 47 if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre 48 @REM check for pre script, once with legacy .bat ending and once with .cmd ending 49 if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" 50 if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" 51 :skipRcPre 52 53 @setlocal 54 55 set ERROR_CODE=0 56 57 @REM To isolate internal variables from possible post scripts, we use another setlocal 58 @setlocal 59 60 @REM ==== START VALIDATION ==== 61 if not "%JAVA_HOME%" == "" goto OkJHome 62 63 echo. 64 echo Error: JAVA_HOME not found in your environment. >&2 65 echo Please set the JAVA_HOME variable in your environment to match the >&2 66 echo location of your Java installation. >&2 67 echo. 68 goto error 69 70 :OkJHome 71 if exist "%JAVA_HOME%\bin\java.exe" goto init 72 73 echo. 74 echo Error: JAVA_HOME is set to an invalid directory. >&2 75 echo JAVA_HOME = "%JAVA_HOME%" >&2 76 echo Please set the JAVA_HOME variable in your environment to match the >&2 77 echo location of your Java installation. >&2 78 echo. 79 goto error 80 81 @REM ==== END VALIDATION ==== 82 83 :init 84 85 @REM Find the project base dir, i.e. the directory that contains the folder ".mvn". 86 @REM Fallback to current working directory if not found. 87 88 set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% 89 IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir 90 91 set EXEC_DIR=%CD% 92 set WDIR=%EXEC_DIR% 93 :findBaseDir 94 IF EXIST "%WDIR%"\.mvn goto baseDirFound 95 cd .. 96 IF "%WDIR%"=="%CD%" goto baseDirNotFound 97 set WDIR=%CD% 98 goto findBaseDir 99 100 :baseDirFound 101 set MAVEN_PROJECTBASEDIR=%WDIR% 102 cd "%EXEC_DIR%" 103 goto endDetectBaseDir 104 105 :baseDirNotFound 106 set MAVEN_PROJECTBASEDIR=%EXEC_DIR% 107 cd "%EXEC_DIR%" 108 109 :endDetectBaseDir 110 111 IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig 112 113 @setlocal EnableExtensions EnableDelayedExpansion 114 for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a 115 @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% 116 117 :endReadAdditionalConfig 118 119 SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" 120 set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" 121 set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain 122 123 set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" 124 125 FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( 126 IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 127 ) 128 129 @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central 130 @REM This allows using the maven wrapper in projects that prohibit checking in binary data. 131 if exist %WRAPPER_JAR% ( 132 if "%MVNW_VERBOSE%" == "true" ( 133 echo Found %WRAPPER_JAR% 134 ) 135 ) else ( 136 if not "%MVNW_REPOURL%" == "" ( 137 SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" 138 ) 139 if "%MVNW_VERBOSE%" == "true" ( 140 echo Couldn't find %WRAPPER_JAR%, downloading it ... 141 echo Downloading from: %DOWNLOAD_URL% 142 ) 143 144 powershell -Command "&{"^ 145 "$webclient = new-object System.Net.WebClient;"^ 146 "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ 147 "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ 148 "}"^ 149 "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ 150 "}" 151 if "%MVNW_VERBOSE%" == "true" ( 152 echo Finished downloading %WRAPPER_JAR% 153 ) 154 ) 155 @REM End of extension 156 157 @REM Provide a "standardized" way to retrieve the CLI args that will 158 @REM work with both Windows and non-Windows executions. 159 set MAVEN_CMD_LINE_ARGS=%* 160 161 %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* 162 if ERRORLEVEL 1 goto error 163 goto end 164 165 :error 166 set ERROR_CODE=1 167 168 :end 169 @endlocal & set ERROR_CODE=%ERROR_CODE% 170 171 if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost 172 @REM check for post script, once with legacy .bat ending and once with .cmd ending 173 if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" 174 if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" 175 :skipRcPost 176 177 @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' 178 if "%MAVEN_BATCH_PAUSE%" == "on" pause 179 180 if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% 181 182 exit /B %ERROR_CODE%