SDKMAN!
GitHub概要
sdkman/sdkman-cli
The SDKMAN! Command Line Interface
スター6,428
ウォッチ118
フォーク635
作成日:2012年8月27日
言語:Gherkin
ライセンス:Apache License 2.0
トピックス
なし
スター履歴
データ取得日時: 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をインストールし、シンボリックリンクとシェル関数を使用してバージョンを管理します。環境変数PATHとJAVA_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などから関連行を削除