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