Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
3.3.0, 3.3.1, 3.3.2
-
None
-
None
-
Windows 10, Windows Server 2022 with powershell 5.1
-
Patch, Important
Description
Since version 3.3.0, we cannot download Maven distribution if we set MVNW_REPOURL on Windows platforms (Windows 10, Windows Server 2022) with script-only.
wrapperVersion=3.3.2 distributionType=only-script distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
PS C:\workspace\poc\maven-build> .\mvnw.cmd -v icm : Exception lors de l'appel de « DownloadFile » avec « 2 » argument(s) : « Le serveur distant a retourné une erreur : (404) Introuvable. » Au caractère Ligne:1 : 72 + ... 'mvnw.cmd'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Invoke-Command], MethodInvocationException + FullyQualifiedErrorId : WebException,Microsoft.PowerShell.Commands.InvokeCommandCommand Commande ECHO activée. Cannot start maven from wrapper
If MVNW_VERBOSE is also set to "true" we can have some hints
PS C:\workspace\poc\maven-build> .\mvnw.cmd -v COMMENTAIRES : Couldn't find MAVEN_HOME, downloading and installing it ... COMMENTAIRES : Downloading from: https://nexus.local/repository/maven-repo/maven/mvnd/https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip COMMENTAIRES : Downloading to: C:\Users\jahk04\AppData\Local\Temp\tmp950D.tmp.dir/apache-maven-3.9.9-bin.zip icm : Exception lors de l'appel de «DownloadFile» avec «2» argument(s): «Le serveur distant a retourné une erreur: (404) Introuvable.» Au caractère Ligne:1 : 72 + ... 'mvnw.cmd'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Invoke-Command], MethodInvocationException + FullyQualifiedErrorId : WebException,Microsoft.PowerShell.Commands.InvokeCommandCommand Commande ECHO activée. Cannot start maven from wrapper
$env:MVNW_REPOURL is concatened with mvnd context and the actual distributionUrl defined inside .mvn/wrapper/maven-wrapper.properties
Looking at script mvnw.cmd, it seems that the following block is at fault
# 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,'')" }
Two "bugs" in my opinion
- USE_MVND evaluation is incorrect: should have been
if ($USE_MVND -eq $False)
the variable USE_MVND is previously set to either $true or $false
- The string substitution doesn't work correctly, the following works for my environment
$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')
After fixing these two lines
PS C:\workspace\poc\maven-build> .\mvnw.cmd -v COMMENTAIRES : Couldn't find MAVEN_HOME, downloading and installing it ... COMMENTAIRES : Downloading from: https://nexus.local/repository/maven-repo/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip COMMENTAIRES : Downloading to: C:\Users\jahk04\AppData\Local\Temp\tmp1DCA.tmp.dir/apache-maven-3.9.9-bin.zip