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