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 Apache Maven Wrapper startup batch script, version 3.1.1
 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 MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
 28 @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
 29 @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
 30 @REM     e.g. to debug Maven itself, use
 31 @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
 32 @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
 33 @REM ----------------------------------------------------------------------------
 34 
 35 @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
 36 @echo off
 37 @REM set title of command window
 38 title %0
 39 @REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
 40 @if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
 41 
 42 @REM set %HOME% to equivalent of $HOME
 43 if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
 44 
 45 @REM Execute a user defined script before this one
 46 if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
 47 @REM check for pre script, once with legacy .bat ending and once with .cmd ending
 48 if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
 49 if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
 50 :skipRcPre
 51 
 52 @setlocal
 53 
 54 set ERROR_CODE=0
 55 
 56 @REM To isolate internal variables from possible post scripts, we use another setlocal
 57 @setlocal
 58 
 59 @REM ==== START VALIDATION ====
 60 if not "%JAVA_HOME%" == "" goto OkJHome
 61 
 62 echo.
 63 echo Error: JAVA_HOME not found in your environment. >&2
 64 echo Please set the JAVA_HOME variable in your environment to match the >&2
 65 echo location of your Java installation. >&2
 66 echo.
 67 goto error
 68 
 69 :OkJHome
 70 if exist "%JAVA_HOME%\bin\java.exe" goto init
 71 
 72 echo.
 73 echo Error: JAVA_HOME is set to an invalid directory. >&2
 74 echo JAVA_HOME = "%JAVA_HOME%" >&2
 75 echo Please set the JAVA_HOME variable in your environment to match the >&2
 76 echo location of your Java installation. >&2
 77 echo.
 78 goto error
 79 
 80 @REM ==== END VALIDATION ====
 81 
 82 :init
 83 
 84 @REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
 85 @REM Fallback to current working directory if not found.
 86 
 87 set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
 88 IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
 89 
 90 set EXEC_DIR=%CD%
 91 set WDIR=%EXEC_DIR%
 92 :findBaseDir
 93 IF EXIST "%WDIR%"\.mvn goto baseDirFound
 94 cd ..
 95 IF "%WDIR%"=="%CD%" goto baseDirNotFound
 96 set WDIR=%CD%
 97 goto findBaseDir
 98 
 99 :baseDirFound
100 set MAVEN_PROJECTBASEDIR=%WDIR%
101 cd "%EXEC_DIR%"
102 goto endDetectBaseDir
103 
104 :baseDirNotFound
105 set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
106 cd "%EXEC_DIR%"
107 
108 :endDetectBaseDir
109 
110 IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
111 
112 @setlocal EnableExtensions EnableDelayedExpansion
113 for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
114 @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
115 
116 :endReadAdditionalConfig
117 
118 SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
119 set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
120 set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
121 
122 set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
123 
124 FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
125     IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
126 )
127 
128 @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
129 @REM This allows using the maven wrapper in projects that prohibit checking in binary data.
130 if exist %WRAPPER_JAR% (
131     if "%MVNW_VERBOSE%" == "true" (
132         echo Found %WRAPPER_JAR%
133     )
134 ) else (
135     if not "%MVNW_REPOURL%" == "" (
136         SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
137     )
138     if "%MVNW_VERBOSE%" == "true" (
139         echo Couldn't find %WRAPPER_JAR%, downloading it ...
140         echo Downloading from: %WRAPPER_URL%
141     )
142 
143     powershell -Command "&{"^
144 		"$webclient = new-object System.Net.WebClient;"^
145 		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
146 		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
147 		"}"^
148 		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
149 		"}"
150     if "%MVNW_VERBOSE%" == "true" (
151         echo Finished downloading %WRAPPER_JAR%
152     )
153 )
154 @REM End of extension
155 
156 @REM Provide a "standardized" way to retrieve the CLI args that will
157 @REM work with both Windows and non-Windows executions.
158 set MAVEN_CMD_LINE_ARGS=%*
159 
160 %MAVEN_JAVA_EXE% ^
161   %JVM_CONFIG_MAVEN_PROPS% ^
162   %MAVEN_OPTS% ^
163   %MAVEN_DEBUG_OPTS% ^
164   -classpath %WRAPPER_JAR% ^
165   "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
166   %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
167 if ERRORLEVEL 1 goto error
168 goto end
169 
170 :error
171 set ERROR_CODE=1
172 
173 :end
174 @endlocal & set ERROR_CODE=%ERROR_CODE%
175 
176 if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
177 @REM check for post script, once with legacy .bat ending and once with .cmd ending
178 if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
179 if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
180 :skipRcPost
181 
182 @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
183 if "%MAVEN_BATCH_PAUSE%"=="on" pause
184 
185 if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
186 
187 cmd /C exit /B %ERROR_CODE%