jenv
GitHub概要
スター6,277
ウォッチ69
フォーク392
作成日:2013年1月24日
言語:Shell
ライセンス:MIT License
トピックス
なし
スター履歴
データ取得日時: 2025/7/20 02:59
言語バージョン管理ツール
jenv
概要
jenvは、複数のJavaバージョンを管理するためのコマンドラインツールです。rbenvにインスパイアされて開発され、プロジェクトごとに異なるJDKバージョンを使用できます。JAVA_HOME環境変数を自動的に管理し、MavenやGradleなどのビルドツールとシームレスに統合されます。
詳細
主な特徴
- JAVA_HOME自動管理: 環境変数を自動的に設定・更新
- プロジェクト別管理: .java-versionファイルによる自動切り替え
- ビルドツール統合: Maven、Gradle、Antと完全互換
- 複数JDK共存: Oracle JDK、OpenJDK、AdoptOpenJDKなど
- プラグインシステム: 機能拡張が可能
- シェル統合: bash、zsh、fishをサポート
動作原理
jenvはshimディレクトリをPATHに追加し、javaコマンドをインターセプトします。実行時に適切なJDKバージョンを判定し、JAVA_HOMEを設定してから実際のJavaコマンドを実行します。
重要な注意点
jenvはJDKのインストールは行いません。事前にJDKをインストールし、jenvに登録する必要があります。これはpyenvやrbenvとは異なる点です。
メリット・デメリット
メリット
- 軽量: JDKの管理のみに特化したシンプルな設計
- 柔軟性: 既存のJDKインストールを活用
- プロジェクト分離: プロジェクトごとの独立したJava環境
- IDE対応: IntelliJ IDEA、Eclipseとの連携
- 標準的な動作: JAVA_HOMEベースで既存ツールと互換
- 複数ベンダー対応: 様々なJDKディストリビューションに対応
デメリット
- JDKインストール機能なし: 別途JDKのインストールが必要
- Windows非対応: UNIX系OSのみサポート
- 初期設定の複雑さ: JDKの手動登録が必要
- 更新の手間: 新しいJDKバージョンは手動で追加
- 開発停滞: 最近のアップデートが少ない
参考ページ
書き方の例
インストール(Linux/macOS)
# Gitクローンによるインストール
git clone https://github.com/jenv/jenv.git ~/.jenv
# macOSではHomebrewも使用可能
brew install jenv
# Linux(LinuxBrew)
brew install jenv
シェル設定(.bashrcまたは.zshrcに追加)
# jenvのパス設定
export PATH="$HOME/.jenv/bin:$PATH"
# jenvの初期化
eval "$(jenv init -)"
# JAVA_HOME自動設定の有効化(重要)
eval "$(jenv enable-plugin export)"
# 設定を反映
source ~/.bashrc # または source ~/.zshrc
JDKのインストールと登録
# JDKのインストール(例:macOSでHomebrew使用)
brew install openjdk@17
brew install openjdk@11
brew install openjdk@8
# JDKのインストール(例:Ubuntu)
sudo apt update
sudo apt install openjdk-17-jdk
sudo apt install openjdk-11-jdk
sudo apt install openjdk-8-jdk
# インストール済みJDKをjenvに登録
jenv add /usr/lib/jvm/java-17-openjdk-amd64
jenv add /usr/lib/jvm/java-11-openjdk-amd64
jenv add /usr/lib/jvm/java-8-openjdk-amd64
# macOSの場合の登録例
jenv add /Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home
jenv add $(/usr/libexec/java_home -v 17)
基本的な使い方
# 登録済みJDKバージョンの確認
jenv versions
# 利用可能なJDKの詳細表示
jenv versions --bare
# グローバルバージョンの設定
jenv global 17.0
# 現在のバージョン確認
jenv version
java -version
# JAVA_HOMEの確認
echo $JAVA_HOME
プロジェクトごとの管理
# プロジェクトディレクトリに移動
cd /path/to/my-java-project
# このプロジェクト用のJavaバージョンを設定
jenv local 11.0
# .java-versionファイルが作成される
cat .java-version
# 11.0
# 別のプロジェクトで異なるバージョンを使用
cd /path/to/legacy-project
jenv local 1.8
java -version # Java 8が使用される
一時的なバージョン切り替え
# 現在のシェルセッションのみでバージョンを変更
jenv shell 17.0
# 元に戻す
jenv shell --unset
プラグインの管理
# 利用可能なプラグインの確認
jenv plugins
# exportプラグインの有効化(JAVA_HOME自動設定)
jenv enable-plugin export
# Mavenプラグインの有効化
jenv enable-plugin maven
# Gradleプラグインの有効化
jenv enable-plugin gradle
# プラグインの無効化
jenv disable-plugin maven
JDKの管理
# 新しいJDKの追加
jenv add /path/to/new/jdk
# エイリアスの作成
jenv alias oracle64-17.0.2 oracle-17
# JDKの削除
jenv remove 11.0.2
# 特定のバージョンの詳細パスを表示
jenv which java
jenv which javac
MavenおよびGradleとの統合
# Mavenプロジェクトでの使用
cd /path/to/maven-project
jenv local 11.0
mvn --version # Java 11が使用される
# Gradleプロジェクトでの使用
cd /path/to/gradle-project
jenv local 17.0
gradle --version # Java 17が使用される
# プロジェクトのpom.xmlやbuild.gradleと連携
# JAVA_HOMEが自動的に設定されるため、追加設定不要
トラブルシューティング
# jenvの再初期化
jenv rehash
# 設定の確認
jenv doctor
# JDKパスの確認
jenv which java
# 環境変数の確認
env | grep JAVA
# jenvのアップデート
cd ~/.jenv
git pull