|
1 | | -<# : batch portion |
2 | 1 | @REM ---------------------------------------------------------------------------- |
3 | 2 | @REM Licensed to the Apache Software Foundation (ASF) under one |
4 | 3 | @REM or more contributor license agreements. See the NOTICE file |
|
8 | 7 | @REM "License"); you may not use this file except in compliance |
9 | 8 | @REM with the License. You may obtain a copy of the License at |
10 | 9 | @REM |
11 | | -@REM http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | +@REM https://www.apache.org/licenses/LICENSE-2.0 |
12 | 11 | @REM |
13 | 12 | @REM Unless required by applicable law or agreed to in writing, |
14 | 13 | @REM software distributed under the License is distributed on an |
|
19 | 18 | @REM ---------------------------------------------------------------------------- |
20 | 19 |
|
21 | 20 | @REM ---------------------------------------------------------------------------- |
22 | | -@REM Apache Maven Wrapper startup batch script, version 3.3.3 |
| 21 | +@REM Maven2 Start Up Batch script |
| 22 | +@REM |
| 23 | +@REM Required ENV vars: |
| 24 | +@REM JAVA_HOME - location of a JDK home dir |
23 | 25 | @REM |
24 | 26 | @REM Optional ENV vars |
25 | | -@REM MVNW_REPOURL - repo url base for downloading maven distribution |
26 | | -@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven |
27 | | -@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output |
| 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 key stroke 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 |
28 | 34 | @REM ---------------------------------------------------------------------------- |
29 | 35 |
|
30 | | -@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) |
31 | | -@SET __MVNW_CMD__= |
32 | | -@SET __MVNW_ERROR__= |
33 | | -@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% |
34 | | -@SET PSModulePath= |
35 | | -@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( |
36 | | - IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) |
37 | | -) |
38 | | -@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% |
39 | | -@SET __MVNW_PSMODULEP_SAVE= |
40 | | -@SET __MVNW_ARG0_NAME__= |
41 | | -@SET MVNW_USERNAME= |
42 | | -@SET MVNW_PASSWORD= |
43 | | -@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) |
44 | | -@echo Cannot start maven from wrapper >&2 && exit /b 1 |
45 | | -@GOTO :EOF |
46 | | -: end batch / begin powershell #> |
47 | | - |
48 | | -$ErrorActionPreference = "Stop" |
49 | | -if ($env:MVNW_VERBOSE -eq "true") { |
50 | | - $VerbosePreference = "Continue" |
51 | | -} |
52 | | - |
53 | | -# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties |
54 | | -$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl |
55 | | -if (!$distributionUrl) { |
56 | | - Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" |
57 | | -} |
58 | | - |
59 | | -switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { |
60 | | - "maven-mvnd-*" { |
61 | | - $USE_MVND = $true |
62 | | - $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" |
63 | | - $MVN_CMD = "mvnd.cmd" |
64 | | - break |
65 | | - } |
66 | | - default { |
67 | | - $USE_MVND = $false |
68 | | - $MVN_CMD = $script -replace '^mvnw','mvn' |
69 | | - break |
70 | | - } |
71 | | -} |
72 | | - |
73 | | -# apply MVNW_REPOURL and calculate MAVEN_HOME |
74 | | -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash> |
75 | | -if ($env:MVNW_REPOURL) { |
76 | | - $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } |
77 | | - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" |
78 | | -} |
79 | | -$distributionUrlName = $distributionUrl -replace '^.*/','' |
80 | | -$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' |
81 | | - |
82 | | -$MAVEN_M2_PATH = "$HOME/.m2" |
83 | | -if ($env:MAVEN_USER_HOME) { |
84 | | - $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" |
85 | | -} |
86 | | - |
87 | | -if (-not (Test-Path -Path $MAVEN_M2_PATH)) { |
88 | | - New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null |
89 | | -} |
90 | | - |
91 | | -$MAVEN_WRAPPER_DISTS = $null |
92 | | -if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { |
93 | | - $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" |
94 | | -} else { |
95 | | - $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" |
96 | | -} |
97 | | - |
98 | | -$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" |
99 | | -$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' |
100 | | -$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" |
101 | | - |
102 | | -if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { |
103 | | - Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" |
104 | | - Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" |
105 | | - exit $? |
106 | | -} |
107 | | - |
108 | | -if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { |
109 | | - Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" |
110 | | -} |
111 | | - |
112 | | -# prepare tmp dir |
113 | | -$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile |
114 | | -$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" |
115 | | -$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null |
116 | | -trap { |
117 | | - if ($TMP_DOWNLOAD_DIR.Exists) { |
118 | | - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } |
119 | | - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } |
120 | | - } |
121 | | -} |
122 | | - |
123 | | -New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null |
124 | | - |
125 | | -# Download and Install Apache Maven |
126 | | -Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." |
127 | | -Write-Verbose "Downloading from: $distributionUrl" |
128 | | -Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" |
129 | | - |
130 | | -$webclient = New-Object System.Net.WebClient |
131 | | -if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { |
132 | | - $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) |
133 | | -} |
134 | | -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 |
135 | | -$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null |
136 | | - |
137 | | -# If specified, validate the SHA-256 sum of the Maven distribution zip file |
138 | | -$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum |
139 | | -if ($distributionSha256Sum) { |
140 | | - if ($USE_MVND) { |
141 | | - Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." |
142 | | - } |
143 | | - Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash |
144 | | - if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { |
145 | | - Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." |
146 | | - } |
147 | | -} |
148 | | - |
149 | | -# unzip and move |
150 | | -Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null |
151 | | - |
152 | | -# Find the actual extracted directory name (handles snapshots where filename != directory name) |
153 | | -$actualDistributionDir = "" |
154 | | - |
155 | | -# First try the expected directory name (for regular distributions) |
156 | | -$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" |
157 | | -$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" |
158 | | -if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { |
159 | | - $actualDistributionDir = $distributionUrlNameMain |
160 | | -} |
161 | | - |
162 | | -# If not found, search for any directory with the Maven executable (for snapshots) |
163 | | -if (!$actualDistributionDir) { |
164 | | - Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { |
165 | | - $testPath = Join-Path $_.FullName "bin/$MVN_CMD" |
166 | | - if (Test-Path -Path $testPath -PathType Leaf) { |
167 | | - $actualDistributionDir = $_.Name |
168 | | - } |
169 | | - } |
170 | | -} |
171 | | - |
172 | | -if (!$actualDistributionDir) { |
173 | | - Write-Error "Could not find Maven distribution directory in extracted archive" |
174 | | -} |
175 | | - |
176 | | -Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" |
177 | | -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null |
178 | | -try { |
179 | | - Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null |
180 | | -} catch { |
181 | | - if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { |
182 | | - Write-Error "fail to move MAVEN_HOME" |
183 | | - } |
184 | | -} finally { |
185 | | - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } |
186 | | - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } |
187 | | -} |
188 | | - |
189 | | -Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" |
| 36 | +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' |
| 37 | +@echo off |
| 38 | +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' |
| 39 | +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% |
| 40 | + |
| 41 | +@REM set %HOME% to equivalent of $HOME |
| 42 | +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") |
| 43 | + |
| 44 | +@REM Execute a user defined script before this one |
| 45 | +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre |
| 46 | +@REM check for pre script, once with legacy .bat ending and once with .cmd ending |
| 47 | +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" |
| 48 | +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" |
| 49 | +:skipRcPre |
| 50 | + |
| 51 | +@setlocal |
| 52 | + |
| 53 | +set ERROR_CODE=0 |
| 54 | + |
| 55 | +@REM To isolate internal variables from possible post scripts, we use another setlocal |
| 56 | +@setlocal |
| 57 | + |
| 58 | +@REM ==== START VALIDATION ==== |
| 59 | +if not "%JAVA_HOME%" == "" goto OkJHome |
| 60 | + |
| 61 | +echo. |
| 62 | +echo Error: JAVA_HOME not found in your environment. >&2 |
| 63 | +echo Please set the JAVA_HOME variable in your environment to match the >&2 |
| 64 | +echo location of your Java installation. >&2 |
| 65 | +echo. |
| 66 | +goto error |
| 67 | + |
| 68 | +:OkJHome |
| 69 | +if exist "%JAVA_HOME%\bin\java.exe" goto init |
| 70 | + |
| 71 | +echo. |
| 72 | +echo Error: JAVA_HOME is set to an invalid directory. >&2 |
| 73 | +echo JAVA_HOME = "%JAVA_HOME%" >&2 |
| 74 | +echo Please set the JAVA_HOME variable in your environment to match the >&2 |
| 75 | +echo location of your Java installation. >&2 |
| 76 | +echo. |
| 77 | +goto error |
| 78 | + |
| 79 | +@REM ==== END VALIDATION ==== |
| 80 | + |
| 81 | +:init |
| 82 | + |
| 83 | +set MAVEN_CMD_LINE_ARGS=%* |
| 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 | + |
| 121 | +set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar"" |
| 122 | +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain |
| 123 | + |
| 124 | +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% |
| 125 | +if ERRORLEVEL 1 goto error |
| 126 | +goto end |
| 127 | + |
| 128 | +:error |
| 129 | +set ERROR_CODE=1 |
| 130 | + |
| 131 | +:end |
| 132 | +@endlocal & set ERROR_CODE=%ERROR_CODE% |
| 133 | + |
| 134 | +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost |
| 135 | +@REM check for post script, once with legacy .bat ending and once with .cmd ending |
| 136 | +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" |
| 137 | +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" |
| 138 | +:skipRcPost |
| 139 | + |
| 140 | +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' |
| 141 | +if "%MAVEN_BATCH_PAUSE%" == "on" pause |
| 142 | + |
| 143 | +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% |
| 144 | + |
| 145 | +exit /B %ERROR_CODE% |
0 commit comments