The "init" shell wrapper script, that often ends up as /usr/bin/mvn in downstream distributions, calls the program "which" in the situation where JAVA_HOME is not defined.
"which" is a separate binary program that may or may not be installed. Increasingly it may not be in environments which are trying to reduce their install footprint e.g. containers.
A portable alternative is to use command -v with some defensive commands prior (unalias, unset: see https://pubs.opengroup.org/onlinepubs/009695399/utilities/command.html).--
I've got a PR ready to go.