[ 
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)

Reply via email to