プロジェクト/リポジトリごとにJVMのバージョンを切り替える

エキサイト株式会社メディア事業部エンジニアの佐々木です。

メディア事業部では、最近JVMを利用した開発が増えてきており、プロジェクトやリポジトリごとにバージョンが変わったりが起きています。これをなるべく自動で切り替える方法をご紹介します。

前提

メディア事業部では、SDKMANを使用して、Javaをインストールしております。Windows/Mac/Linuxで統一したコマンドを使用できるので管理が楽です。

設定ファイルの作成

設定ファイルを作成します。

$ sdk env init

コマンドを実行すると、下記ファイルが出来上がります。

# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=17.0.2-tem

sdkman_auto_envというパラメータを有効にすると、ディレクトリ遷移時に自動的に切り替わります。下記コマンド実行すると書き換わります。

$ sed -i -e 's/sdkman_auto_env=false/sdkman_auto_env=true/g' ~/.sdkman/etc/config

切替の確認

ディレクトリを移動すると、下記のようなメッセージがでます。

Using java version 17.0.2-tem in this shell.

正常に切り替わりました。

マシンインストールされていないJVMバージョンが指定されている場合

マシンにないJVMが指定されている場合は、インストールを促すようになります。

インストールされていないJVMバージョンを.sdkmanrcに記載します。

# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=18.0.1-amzn

記載後に、ディレクトリを移動すると下記のように警告をだしてくれます。

Stop! Candidate version is not installed.

Tip: Run the following to install this version

$ sdk install java 18.0.1-amzn

警告をだしてくれたので、インストールします。警告にあるコマンドを叩いてもいいんですが、コピペが面倒なので、.sdkmanrcに指定されているものをインストールするショートカットコマンドを実行します。

$ sdk env install

Downloading: java 18.0.1-amzn

In progress...

######################################################################## 100.0%

Repackaging Java 18.0.1-amzn...

Done repackaging...
Cleaning up residual files...

Installing: java 18.0.1-amzn
Done installing!


Using java version 18.0.1-amzn in this shell.

こんな感じでインストールが完了します。

まとめ

プロジェクトが多くなってくると環境問題がでてくるかとおもいます。Dockerを使うのも手ですが、こういった切替がほぼ自動でできるのは便利かと思います。

最後に

エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しております。長期インターンも歓迎していますので、興味があれば連絡いただければと思います。

カジュアル面談はこちらになります! meety.net

就業型インターンの募集もしております!

www.wantedly.com

募集職種一覧はこちらになります!(カジュアルからもOK) www.wantedly.com