Skip to content

[Backport maven-3.10.x] [MNG-8056] Fix -f/-s parameters failing with absolute Cygwin paths (fix #10810) - #13593

Open
arturobernalg wants to merge 1 commit into
apache:maven-3.10.xfrom
arturobernalg:backport/13239-to-maven-3.10.x
Open

arturobernalg wants to merge 1 commit into
apache:maven-3.10.xfrom
arturobernalg:backport/13239-to-maven-3.10.x

Conversation

@arturobernalg

Copy link
Copy Markdown
Member

Backport of #13239 to maven-3.10.x. It is already on master and on maven-4.0.x (#13248).

Under Cygwin the JVM is a native Windows process and cannot resolve POSIX paths such as /cygdrive/c/temp/pom.xml, so mvn -f /cygdrive/c/temp/pom.xml validate and mvn -s /cygdrive/c/.../settings.xml fail (#10810, reported against 3.9.6). bin/mvn already converts its own paths with cygpath, but not the ones given as arguments. It now converts the absolute POSIX path of -f/--file, -s/--settings, -gs/--global-settings, -t/--toolchains, -gt/--global-toolchains, -ps/--project-settings, -is/--install-settings, -it/--install-toolchains and -l/--log-file, both as separate arguments and as --flag=value. MinGW and MSYS2 are not touched, and relative paths and Windows paths are left as they are.

The patch did not apply as it was, because the launcher differs on this branch (the MAVEN_ARGS handling is different, and -af does not exist in 3.x), so the block was placed after the MAVEN_ARGS processing and the -af/--at-file flag was left out. The test script test-mvn-path-conversion.sh has the same cases as on master: -f, -s and --file= with a /cygdrive path, a relative path, and MinGW. It passes, and the three Cygwin cases fail without the change. I could not run it on a real Cygwin, the script uses a cygpath stub, and I did not run the integration tests.


To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
check one of the following:

@gnodet-bot gnodet-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, well-tested backport of MNG-8056 Cygwin path conversion to maven-3.10.x. The argument-walking logic is sound, edge cases (relative paths, MinGW passthrough) are handled, and the tests are thorough.

One cosmetic note below — harmless dead code in the case pattern.

This review was generated by an AI agent, Hermès on behalf of @gnodet.

Comment thread apache-maven/src/bin/mvn Outdated
apache#10810)

Under Cygwin the JVM is a native Windows process and cannot resolve POSIX paths such as /cygdrive/c/temp/pom.xml. bin/mvn now converts absolute POSIX paths given to -f/--file, -s/--settings, -gs/--global-settings, -t/--toolchains, -gt/--global-toolchains, -ps/--project-settings, -is/--install-settings, -it/--install-toolchains and -l/--log-file with cygpath --windows, both as separate and as --flag=value arguments. MinGW and MSYS2 are not touched, and relative paths are left as they are.

Backport of apache#13239 to maven-3.10.x.
@arturobernalg
arturobernalg force-pushed the backport/13239-to-maven-3.10.x branch from 54d5f71 to 9321e7d Compare October 17, 2026 10:18
@arturobernalg

Copy link
Copy Markdown
Member Author

Dropped the options that do not exist on this branch (-ps, -is, -it and their long forms) from the conversion and from the comment in 9321e7d. The test script still passes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants