SDKMAN! Cheat Sheet (macOS & Linux)

Table of contents

  1. Installation
    1. 1. Prerequisites
    2. 2. Install SDKMAN!
  2. Basic Commands
    1. 🔍 List All SDKs
    2. Install an SDK
    3. Set Default SDK
    4. Use Specific Version (current shell only)
    5. 🔬 Check Current Version
    6. Uninstall an SDK
  3. Per-Project SDK Version
    1. Use SDKs from .sdkmanrc
  4. Supported SDKs (Common)
  5. SDKMAN! CLI Tips
  6. Configuration File (~/.sdkman/etc/config)
  7. Troubleshooting
  8. Uninstall SDKMAN!
  9. Best Practices

SDKMAN! = Software Development Kit Manager Great for managing parallel versions of Java, Kotlin, Scala, Maven, Gradle, etc.


Installation

1. Prerequisites

  • Bash, Zsh, or similar shell
  • curl, unzip
  • Unix-like OS (Linux/macOS)

2. Install SDKMAN!

curl -s "https://get.sdkman.io" | bash

Then:

source "$HOME/.sdkman/bin/sdkman-init.sh"

Or reopen the terminal.


Basic Commands

🔍 List All SDKs

sdk list

or for a specific SDK:

sdk list java

Install an SDK

sdk install java 21-tem
sdk install gradle 8.5

Set Default SDK

sdk default java 21-tem

Use Specific Version (current shell only)

sdk use java 17.0.8-tem

🔬 Check Current Version

sdk current

Uninstall an SDK

sdk uninstall java 17.0.8-tem

Per-Project SDK Version

Create a .sdkmanrc file in your project directory:

java=17.0.8-tem
gradle=8.5

Use SDKs from .sdkmanrc

sdk env install  # install missing versions
sdk env          # switch to versions defined in .sdkmanrc

You can also auto-enable this:

sdk config
# Enable auto-env feature

Supported SDKs (Common)

SDKCommand
Javasdk install java
Kotlinsdk install kotlin
Scalasdk install scala
Groovysdk install groovy
Gradlesdk install gradle
Mavensdk install maven
Antsdk install ant
Spring Bootsdk install springboot

Check sdk list to explore more.


SDKMAN! CLI Tips

TaskCommand
Show helpsdk help
Show installed SDKssdk current
Show available versionssdk list <sdk>
Update SDKMAN! itselfsdk selfupdate
Update available SDKssdk update
Auto-complete (enable in shell)source "$SDKMAN_DIR/bin/sdkman-init.sh"

Configuration File (~/.sdkman/etc/config)

Common options:

  • sdkman_auto_env=true – Auto use .sdkmanrc
  • sdkman_auto_selfupdate=true – Update SDKMAN! automatically

Troubleshooting

ProblemSolution
SDK not availableRun sdk list <sdk> to check name/version
sdk: command not foundSource SDKMAN in shell config
.sdkmanrc ignoredEnable auto-env: sdk config
Conflicting SDK versionsUse sdk use or .sdkmanrc locally

Uninstall SDKMAN!

rm -rf ~/.sdkman

Also remove from your .bashrc / .zshrc:

# Remove SDKMAN entries

Best Practices

  • Use .sdkmanrc in all your projects for reproducible environments.
  • Regularly update SDKMAN! and your SDKs.
  • Favor Temurin (tem) or Zulu distributions for Java.