[
https://issues.apache.org/jira/browse/MWRAPPER-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17700750#comment-17700750
]
Niels Basjes commented on MWRAPPER-102:
---------------------------------------
I suspect this to be the root cause:
In 3.1.1 this line is used to calculate the download Url
[https://github.com/apache/maven-wrapper/blame/94ec7993ca749908a0a5bbf0ab69abbf365d95fc/maven-wrapper/src/main/java/org/apache/maven/wrapper/Installer.java#L74]
{code:java}
distributionUrl = new URI( mvnwRepoUrl ).resolve( "/" ).resolve( mvnPath
);{code}
I changed it with some extra logging and ran it locally.
There I found the mvnPath =
"org/apache/maven/apache-maven/3.9.0/apache-maven-3.9.0-bin.zip"
And then split the above line to be this "step by step"
{code:java}
distributionUrl = new URI( mvnwRepoUrl );
Logger.warn("Distribution URL 1 :" + distributionUrl);
distributionUrl = distributionUrl.resolve( "/" );
Logger.warn("Distribution URL 2 :" + distributionUrl);
distributionUrl = distributionUrl.resolve( mvnPath );
Logger.warn("Distribution URL 3 :" + distributionUrl);
{code}
which gave
{code:java}
[WARNING] Distribution URL 1 :https://repo1.maven.org/maven2
[WARNING] Distribution URL 2 :https://repo1.maven.org/
[WARNING] Distribution URL 3
:https://repo1.maven.org/org/apache/maven/apache-maven/3.9.0/apache-maven-3.9.0-bin.zip
{code}
So the .resolve("/something/" ) strips the entire path and replaces it with
"/something/" in the 3.1.1 wrapper code.
The reason that some projects did not show this problem was because this is
only causes problems when
1) a custom repo is defined
AND
2) this custom repo URL needs a path
AND
3) the desired maven zip has not yet been downloaded to the local machine.
> Self upgrading with a custom repository url fails
> -------------------------------------------------
>
> Key: MWRAPPER-102
> URL: https://issues.apache.org/jira/browse/MWRAPPER-102
> Project: Maven Wrapper
> Issue Type: Bug
> Components: Maven Wrapper Scripts
> Affects Versions: 3.1.1, 3.2.0
> Reporter: Niels Basjes
> Priority: Major
>
> Assume a project without the maven wrapper present and the
> ~/.m2/wrapper/dists is empty.
> In the project install the 3.1.1 wrapper version with a different REPO url
> {code:bash}
> $ MVNW_REPOURL=https://repo1.maven.org/maven2 mvn
> org.apache.maven.plugins:maven-wrapper-plugin:3.1.1:wrapper
> {code}
> The config now contains
> {code:bash}
> $ fgrep Url .mvn/wrapper/maven-wrapper.properties
> distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.0/apache-maven-3.9.0-bin.zip
> wrapperUrl=https://repo1.maven.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar
> {code}
> Now try to self upgrade
> {code:bash}
> $ MVNW_REPOURL=https://repo1.maven.org/maven2 ./mvnw wrapper:wrapper
> Exception in thread "main" java.io.FileNotFoundException:
> https://repo1.maven.org/org/apache/maven/apache-maven/3.9.0/apache-maven-3.9.0-bin.zip
> at
> {code}
> Important to note here
> 1. The URL it is trying to download from is the specified hostname but
> without the specified path on that host.
> 2. The {{distributionUrl}} specified in
> {{.mvn/wrapper/maven-wrapper.properties}} is the valid URL that yields the
> correct file.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)