Detection Rules
jup init uses the current directory and requires pom.xml there. After
initialization, project-aware commands search upward from any descendant.
Paths, symbolic links, and Windows long-path/8.3-path variants are normalized
so one project does not produce multiple configurations.
If the project contains mvnw or mvnw.cmd, jup saves the Wrapper.
Otherwise it finds mvn or mvn.cmd on PATH. The resolved executable and
reported Maven version are stored with the project.
POM values are evaluated in this order, with ${property} references
resolved:
<release>inmaven-compiler-plugin;maven.compiler.release;<target>inmaven-compiler-plugin;maven.compiler.target;<source>inmaven-compiler-plugin;maven.compiler.source;java.version;jdk.version.
When a local parent POM exists, jup follows <relativePath> for up to 16
parent levels.
Candidates are checked in this order; the first full JDK whose Java major version matches the project is selected:
- the JDK reported by the Maven runtime;
JAVA_HOME,JDK_HOME, and variables such asJAVA8_HOMEorJAVA_HOME_17;- the JDK that owns
javacon PATH; - sibling directories of known JDKs;
<jdkHome>entries in~/.m2/toolchains.xml;- platform locations such as
Program Files/Java,~/.jdks, SDKMAN!, Homebrew, and asdf.
A candidate must contain bin/javac (bin/javac.exe on Windows). Its version
comes from the JDK release file when possible, with javac -version as a
fallback.