SDKMAN¶
SDKMAN! manages parallel versions of multiple Software Development Kits on Unix-based systems.
Note
SDKMAN! primarily serves the JVM ecosystem: Java, Gradle, Maven, Kotlin, Scala, and ~115 other candidates. Each candidate is treated as a package.
Caution
The sdk command is a shell function, not a standalone binary, so mpm
detects SDKMAN by its init script (sdkman-init.sh) rather than a binary
on PATH and wraps every invocation in
bash -c 'source <init> && sdk <args>'.
Note
SDKMAN has no read-only “outdated” verb, so outdated pipes n into
sdk upgrade to capture the candidate list without applying any upgrade.
Home page: https://sdkman.io
Version requirement:
>=5.0.0
Platforms¶
🐧 Linux
🍎 macOS
Operations¶
Operation |
Supported |
|---|---|
|
✓ |
|
✓ |
|
|
|
✓ |
|
✓ |
|
✓ |
|
✓ |
|
✓ |
|
✓ |
Ecosystem¶
Accepted purl types:
pkg:sdkman
Usage¶
$ mpm --sdkman installed
$ mpm --sdkman upgrade --all
$ mpm install pkg:sdkman/hello
$ mpm --dry-run --sdkman upgrade --all
Every example above accepts --dry-run, which simulates the underlying manager calls without touching the system: the safe way to watch what mpm would do before trusting it.
Deselect the manager for a single run with --no-sdkman, disable it from your configuration, or tune its invocation attributes with per-manager overrides.
Command line¶
CLI names, in lookup order:
sdkman-init.shExtra CLI search paths:
/home/runner/.sdkman/binEnvironment forced on each call:
sdkman_auto_answer=truesdkman_colour_enable=false
The version is probed by running:
$ sdkman-init.sh version
SDKMAN!
script: 5.18.2
native: 0.4.6
and extracted with:
r"script:\s+(?P<version>\S+)"
Privilege escalation¶
mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.
See privilege escalation for the full policy.
Cooldown¶
State of SDKMAN’s release-age gating, from the cooldown support table:
Status: ❌ None
With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --allow-unsupported-managers opts back in.
Reference traces¶
Raw native outputs captured in the manager source: the reference mpm’s parsers were written against. If you know SDKMAN well and a transcript below looks wrong, or a newer release changed its output format, report it.
$ sdk current
Using:
groovy: 4.0.22
java: 21.0.4-tem
scala: 3.4.2