Ranges in, versions out
Each resolve statement names a Maven version range and a bound (lowest, highest or snapshot). The resolver
asks your repositories which versions exist and picks one.
repository https://repo1.maven.org/maven2/ as central;
// Accept any 2.x release of Jackson, newest first, but never a release candidate.resolve highest com.fasterxml.jackson.core:jackson-databind:[2.17.0,3.0.0) via central filtering /^.*(rc|SNAPSHOT).*$/;resolve lowest org.slf4j:slf4j-api:[2.0.0,3.0.0) via central;
alias com.fasterxml.jackson.core:jackson-databind as jackson.version;
locked com.fasterxml.jackson.core:jackson-databind:2.21.1;locked org.slf4j:slf4j-api:2.0.0;Ranges in, versions out
Each resolve statement names a Maven version range and a bound (lowest, highest or snapshot). The resolver
asks your repositories which versions exist and picks one.
A lock file that stays readable
Results are written back into the same script as resolved and locked records, with your comments intact, so a
version bump is a one-line diff.
Share a bill of materials
import another project’s published script to inherit its locked versions, and use allow unlocked to say which
of them you may move forward yourself.
Deprecate and blacklist
Mark version ranges as deprecated or blacklisted so downstream builds can warn or fail when they pick them up.
Docker images too
resolve docker almalinux:8-minimal; pins a tag to its immutable sha256 digest.
Strict by default
A script with a syntax error is rejected with the file, line and column, never silently half-parsed.