2023-06-14 15:42:27 -04:00
< # : batch portion
@ REM ----------------------------------------------------------------------------
@ REM Licensed to the Apache Software Foundation (ASF) under one
@ REM or more contributor license agreements. See the NOTICE file
@ REM distributed with this work for additional information
@ REM regarding copyright ownership. The ASF licenses this file
@ REM to you under the Apache License, Version 2.0 (the
@ REM "License"); you may not use this file except in compliance
@ REM with the License. You may obtain a copy of the License at
@ REM
@ REM http://www.apache.org/licenses/LICENSE-2.0
@ REM
@ REM Unless required by applicable law or agreed to in writing,
@ REM software distributed under the License is distributed on an
@ REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@ REM KIND, either express or implied. See the License for the
@ REM specific language governing permissions and limitations
@ REM under the License.
@ REM ----------------------------------------------------------------------------
@ REM ----------------------------------------------------------------------------
2024-05-25 15:11:33 -04:00
@ REM Apache Maven Wrapper startup batch script, version 3.3.2
2023-06-14 15:42:27 -04:00
@ REM
@ REM Optional ENV vars
@ REM MVNW_REPOURL - repo url base for downloading maven distribution
@ REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
@ REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
@ REM ----------------------------------------------------------------------------
@ IF " %__MVNW_ARG0_NAME__% " == " " ( SET __MVNW_ARG0_NAME__ = %~nx0 )
@ SET __MVNW_CMD__ =
@ SET __MVNW_ERROR__ =
@ SET __MVNW_PSMODULEP_SAVE = %PSModulePath%
@ SET PSModulePath =
@ 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 @ (
IF " %% A " == " MVN_CMD " ( set __MVNW_CMD__ = %% B) ELSE IF " %% B " == " " ( echo %% A) ELSE ( echo %% A=%% B)
)
@ SET PSModulePath = %__MVNW_PSMODULEP_SAVE%
@ SET __MVNW_PSMODULEP_SAVE =
@ SET __MVNW_ARG0_NAME__ =
@ SET MVNW_USERNAME =
@ SET MVNW_PASSWORD =
@ IF NOT " %__MVNW_CMD__% " == " " ( %__MVNW_CMD__% %* )
@ echo Cannot start maven from wrapper >& 2 && exit /b 1
@ GOTO : EOF
: end batch / begin powershell #>
$ErrorActionPreference = " Stop "
if ($env:MVNW_VERBOSE - e q " t r u e " ) {
$VerbosePreference = " Continue "
}
# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
$distributionUrl = (Get-Content -Raw " $scriptDir/.mvn/wrapper/maven-wrapper.properties " | ConvertFrom-StringData).distributionUrl
if (!$distributionUrl) {
Write-Error " cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties "
}
switch -wildcard -casesensitive ( $($distributionUrl -replace '^. */','') ) {
" maven-mvnd-* " {
$USE_MVND = $true
$distributionUrl = $distributionUrl -replace '-bin\.[^. ]*$'," -windows-amd64.zip "
$MVN_CMD = " mvnd.cmd "
break
}
default {
$USE_MVND = $false
$MVN_CMD = $script -replace '^m vnw','mvn'
break
}
}
# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-< version> ,maven-mvnd-< version> -< platform> }/< hash>
if ($env:MVNW_REPOURL) {
$MVNW_REPO_PATTERN = if ($USE_MVND) { " /org/apache/maven/ " } else { " /maven/mvnd/ " }
$distributionUrl = " $env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace ' ^ .*'+$MVNW_REPO_PATTERN,'') "
}
$distributionUrlName = $distributionUrl -replace '^. */',''
$distributionUrlNameMain = $distributionUrlName -replace '\.[^. ]*$','' -replace '-bin$',''
$MAVEN_HOME_PARENT = " $HOME/.m2/wrapper/dists/$distributionUrlNameMain "
2024-05-25 15:11:33 -04:00
if ($env:MAVEN_USER_HOME) {
$MAVEN_HOME_PARENT = " $env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain "
}
2023-06-14 15:42:27 -04:00
$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString(" x2 " )}) -join ''
$MAVEN_HOME = " $MAVEN_HOME_PARENT/$MAVEN_HOME_NAME "
if (Test-Path - P a t h " $ M A V E N _ H O M E " - P a t h T y p e C o n t a i n e r ) {
Write-Verbose " found existing MAVEN_HOME at $MAVEN_HOME "
Write-Output " MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD "
exit $?
}
if (! $ d i s t r i b u t i o n U r l N a m e M a i n - o r ( $ d i s t r i b u t i o n U r l N a m e - e q $ d i s t r i b u t i o n U r l N a m e M a i n ) ) {
Write-Error " distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl "
}
# prepare tmp dir
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path " $TMP_DOWNLOAD_DIR_HOLDER.dir "
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
trap {
if ($TMP_DOWNLOAD_DIR.Exists) {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning " Cannot remove $TMP_DOWNLOAD_DIR " }
}
}
New-Item -Itemtype Directory -Path " $MAVEN_HOME_PARENT " -Force | Out-Null
# Download and Install Apache Maven
Write-Verbose " Couldn't find MAVEN_HOME, downloading and installing it ... "
Write-Verbose " Downloading from: $distributionUrl "
Write-Verbose " Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName "
$webclient = New-Object System.Net.WebClient
if ($env:MVNW_USERNAME - a n d $ e n v : M V N W _ P A S S W O R D ) {
$webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$webclient.DownloadFile($distributionUrl, " $TMP_DOWNLOAD_DIR/$distributionUrlName " ) | Out-Null
# If specified, validate the SHA-256 sum of the Maven distribution zip file
$distributionSha256Sum = (Get-Content -Raw " $scriptDir/.mvn/wrapper/maven-wrapper.properties " | ConvertFrom-StringData).distributionSha256Sum
if ($distributionSha256Sum) {
if ($USE_MVND) {
Write-Error " Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties. "
}
2024-05-25 15:11:33 -04:00
Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
2023-06-14 15:42:27 -04:00
if ((Get-FileHash " $ T M P _ D O W N L O A D _ D I R / $ d i s t r i b u t i o n U r l N a m e " - A l g o r i t h m S H A 2 5 6 ) . H a s h . T o L o w e r ( ) - n e $ d i s t r i b u t i o n S h a 2 5 6 S u m ) {
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. "
}
}
# unzip and move
Expand-Archive " $TMP_DOWNLOAD_DIR/$distributionUrlName " -DestinationPath " $TMP_DOWNLOAD_DIR " | Out-Null
Rename-Item -Path " $TMP_DOWNLOAD_DIR/$distributionUrlNameMain " -NewName $MAVEN_HOME_NAME | Out-Null
try {
Move-Item -Path " $TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME " -Destination $MAVEN_HOME_PARENT | Out-Null
} catch {
if (! ( T e s t - P a t h - P a t h " $ M A V E N _ H O M E " - P a t h T y p e C o n t a i n e r ) ) {
Write-Error " fail to move MAVEN_HOME "
}
} finally {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning " Cannot remove $TMP_DOWNLOAD_DIR " }
}
2024-05-25 15:11:33 -04:00
Write-Output " MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD "