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