SDKMAN!

バージョン管理JavaJVMKotlinScalaGroovyMavenGradleCLI

GitHub概要

sdkman/sdkman-cli

The SDKMAN! Command Line Interface

スター6,428
ウォッチ118
フォーク635
作成日:2012年8月27日
言語:Gherkin
ライセンス:Apache License 2.0

トピックス

なし

スター履歴

sdkman/sdkman-cli Star History
データ取得日時: 2025/7/20 02:59

言語バージョン管理ツール

SDKMAN!

概要

SDKMAN!は、Unix系システムでJVM関連のソフトウェア開発キット(SDK)を管理するための強力なコマンドラインツールです。Java、Scala、Kotlin、Groovy、Maven、Gradle、SBT、Spring Bootなど、100以上のJVMベースのツールやフレームワークのバージョンを簡単に管理できます。プロジェクトごとに異なるJDKバージョンを使い分けることができ、チーム開発における環境統一を実現します。

詳細

主な特徴

  • 豊富なSDKサポート: Java、Kotlin、Scala、Groovy、Maven、Gradle、SBT、Spring Boot、Vert.x、Micronaut、Quarkusなど
  • 複数のJDKディストリビューション: Eclipse Temurin、Oracle、Amazon Corretto、GraalVM、Azul Zulu、Liberica、Microsoft等
  • 自動環境設定: プロジェクトごとの.sdkmanrcファイルによる自動切り替え
  • オフライン対応: キャッシュ機能によりインターネット接続なしでも動作
  • 並列バージョン管理: 複数バージョンを同時にインストールして簡単に切り替え
  • CI/CD統合: GitHub ActionsやJenkinsなどのCI/CDパイプラインで使用可能

サポートするJDKディストリビューション

  • Eclipse Temurin(デフォルト、旧AdoptOpenJDK)
  • Oracle JDK
  • Amazon Corretto
  • Microsoft Build of OpenJDK
  • Azul Zulu
  • BellSoft Liberica
  • SAP SapMachine
  • GraalVM CE/EE
  • IBM Semeru
  • Alibaba Dragonwell

動作原理

SDKMAN!は~/.sdkmanディレクトリにSDKをインストールし、シンボリックリンクとシェル関数を使用してバージョンを管理します。環境変数PATHJAVA_HOMEを動的に更新することで、シームレスなバージョン切り替えを実現しています。

メリット・デメリット

メリット

  • 幅広いツールサポート: JVM関連のほぼすべてのツールを管理
  • 豊富なJDKオプション: 主要なJDKディストリビューションをすべてサポート
  • プロジェクト単位の管理: .sdkmanrcファイルで環境を自動設定
  • 高速インストール: 並列ダウンロードとキャッシュ機能
  • 活発なコミュニティ: 頻繁なアップデートと新しいツールの追加
  • ベンダー中立: 特定のJDKベンダーに依存しない

デメリット

  • Unix系限定: WindowsではWSL2またはCygwinが必要
  • 初期設定: シェル設定ファイルの変更が必要
  • ディスク使用量: 複数バージョンのインストールで容量を消費
  • 学習曲線: コマンド体系に慣れる必要がある
  • ネットワーク依存: 初回インストール時はインターネット接続必須

参考ページ

書き方の例

インストール

# SDKMAN!のインストール
curl -s "https://get.sdkman.io" | bash

# インストール後、新しいターミナルを開くか以下を実行
source "$HOME/.sdkman/bin/sdkman-init.sh"

# インストール確認
sdk version

# 最新版へのアップグレード
sdk selfupdate

# 強制的に再インストール
sdk selfupdate force

基本的な使い方

# 利用可能なJavaバージョンの一覧表示
sdk list java

# 最新のLTS版Javaをインストール(Eclipse Temurin)
sdk install java

# 特定バージョンのインストール
sdk install java 21.0.4-tem
sdk install java 17.0.12-tem
sdk install java 11.0.24-tem

# 他のディストリビューションのインストール
sdk install java 21.0.4-amzn  # Amazon Corretto
sdk install java 21.0.4-oracle # Oracle JDK
sdk install java 21.0.4-graal  # GraalVM
sdk install java 21.0.4-zulu   # Azul Zulu

# 現在使用中のバージョン確認
sdk current java
sdk current     # すべてのSDKの現在バージョン表示

バージョンの切り替え

# 一時的な切り替え(現在のシェルセッションのみ)
sdk use java 21.0.4-tem
sdk use java 17.0.12-amzn

# デフォルトバージョンの設定(永続的)
sdk default java 21.0.4-tem

# インストール済みバージョンの確認
sdk list java | grep installed

# ローカルにインストールされたJDKを使用
sdk install java 17-custom /path/to/jdk17
sdk use java 17-custom

ビルドツールの管理

# Mavenのインストール
sdk install maven
sdk install maven 3.9.6
sdk install maven 3.8.8

# Gradleのインストール
sdk install gradle
sdk install gradle 8.5
sdk install gradle 7.6.4

# SBT(Scala Build Tool)のインストール
sdk install sbt
sdk install sbt 1.9.7

# Antのインストール
sdk install ant 1.10.14

プログラミング言語の管理

# Kotlinのインストール
sdk install kotlin
sdk install kotlin 1.9.22

# Scalaのインストール
sdk install scala
sdk install scala 3.3.1
sdk install scala 2.13.12

# Groovyのインストール
sdk install groovy
sdk install groovy 4.0.18

フレームワークの管理

# Spring Bootのインストール
sdk install springboot
sdk install springboot 3.2.2

# Micronautのインストール
sdk install micronaut
sdk install micronaut 4.2.3

# Quarkusのインストール
sdk install quarkus
sdk install quarkus 3.6.6

# Vert.xのインストール
sdk install vertx
sdk install vertx 4.5.1

プロジェクト環境の自動管理

# プロジェクトディレクトリに移動
cd /path/to/my-project

# .sdkmanrcファイルの作成
echo "java=21.0.4-tem" > .sdkmanrc
echo "maven=3.9.6" >> .sdkmanrc
echo "kotlin=1.9.22" >> .sdkmanrc

# 環境の自動適用(ディレクトリ移動時に自動実行)
sdk env

# 現在の環境設定を.sdkmanrcに保存
sdk env init

# .sdkmanrcに基づいてSDKをインストール
sdk env install

キャッシュとオフライン管理

# 候補リストの更新
sdk update

# キャッシュのクリア
sdk flush

# 特定のキャッシュをクリア
sdk flush candidates
sdk flush broadcast
sdk flush version

# オフラインモードの切り替え
sdk offline enable
sdk offline disable

CI/CD環境での使用

# GitHub Actions例
- name: Setup SDKMAN
  run: |
    curl -s "https://get.sdkman.io" | bash
    source "$HOME/.sdkman/bin/sdkman-init.sh"
    
- name: Install Java and Maven
  run: |
    source "$HOME/.sdkman/bin/sdkman-init.sh"
    sdk install java 21.0.4-tem
    sdk install maven 3.9.6
    
# Jenkinsfile例
pipeline {
    agent any
    stages {
        stage('Setup') {
            steps {
                sh '''
                    curl -s "https://get.sdkman.io" | bash
                    source "$HOME/.sdkman/bin/sdkman-init.sh"
                    sdk install java 21.0.4-tem
                '''
            }
        }
    }
}

アンインストールとクリーンアップ

# 特定バージョンのアンインストール
sdk uninstall java 17.0.12-tem
sdk uninstall maven 3.8.8

# 使用されていない古いバージョンの削除
sdk flush temp

# SDKMAN!自体のアンインストール
rm -rf ~/.sdkman
# ~/.bashrc、~/.zshrcなどから関連行を削除