profileShare

rasmusjy / tasteprint

Read-only snapshot

No repository description.

main default branch 169 files Expires Sep 13, 2026, 9:06 AM
mvnw.cmd 8,292 bytes
1 <# : batch portion
2 @REM ----------------------------------------------------------------------------
3 @REM Licensed to the Apache Software Foundation (ASF) under one
4 @REM or more contributor license agreements. See the NOTICE file
5 @REM distributed with this work for additional information
6 @REM regarding copyright ownership. The ASF licenses this file
7 @REM to you under the Apache License, Version 2.0 (the
8 @REM "License"); you may not use this file except in compliance
9 @REM with the License. You may obtain a copy of the License at
10 @REM
11 @REM http://www.apache.org/licenses/LICENSE-2.0
12 @REM
13 @REM Unless required by applicable law or agreed to in writing,
14 @REM software distributed under the License is distributed on an
15 @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 @REM KIND, either express or implied. See the License for the
17 @REM specific language governing permissions and limitations
18 @REM under the License.
19 @REM ----------------------------------------------------------------------------
20
21 @REM ----------------------------------------------------------------------------
22 @REM Apache Maven Wrapper startup batch script, version 3.3.4
23 @REM
24 @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
28 @REM ----------------------------------------------------------------------------
29
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"
190