Skip to content

[MWRAPPER-146] Bad substitution on Windows if MVNW_REPOURL is set on script-only #295

@jira-importer

Description

@jira-importer

Bruno Villegas opened MWRAPPER-146 and commented

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

1. apply MVNW_REPOURL and calculate MAVEN_HOME
1. 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

 

 


Affects: 3.3.0, 3.3.1, 3.3.2

Remote Links:

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingpriority:majorMajor loss of function

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions