[01] PowerShell実践例 ... OpenJDK のインストーラを作ろう


本シリーズのトップページ
https://qiita.com/robozushi10/items/0b0605257ad39bc22895

はじめに

Windows 用の OpenJDK にはインストーラが存在しない.
とはいっても、手動でインストールする操作自体は単純である.

Windows PC で CI/CD をさせる際に OpenJDK のインストール自動化が必要になったので書き残しておく.

 

環境

Windows 10 Pro
PowerShell バージョン 6系

 

詳細

今回は、OpenJDK 15.0.1 をインストールする場合を例にする.
なお、手順の流れとしては次の 1〜 である.

1. OpenJDK 15.0.1 の Zip ファイルを Oracle のページから Download してくる.
2. 上記 1 で入手した Zip ファイルを展開(unzip)する
3. 展開(unzip) したデータを、ローカルのディスク (例: C:\OpenJDK-15.0.1\) に配置する
4. システム環境変数 JAVA_HOME に「上記 3 で配置したパス」を記す
5. システム環境変数 Path に「上記 3 で配置したパス + /bin」を記す

先に結論から

必須処理のみを書き出すと次のようになる.
これで OpenJDK 15.0.1 のインストールが完了する.
コードの処理の詳細は後述している.

## URL を変数 $RJDK に格納する
$RJDK = 'https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_windows-x64_bin.zip'

## Invoke-WebRequest が curl に該当する
Invoke-WebRequest -Uri $RJDK -OutFile openjdk-15.0.1.zip

## Expand-Archive はあらゆる圧縮データを展開するコマンドである.
## Linux での xdg-open が該当する
Expand-Archive openjdk-15.0.1.zip

## Cドライブ直下に「openjdk-15.0.1」というフォルダ名でコピーする
Copy-Item -Force -Recurse openjdk-15.0.1_windows-x64_bin C:\openjdk-15.0.1

## bash で例えると export JAVA_HOME="C:\openjdk-15.0.1" ということ
[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\openjdk-15.0.1", "Machine")

## 既存の $Path を取り出す
$CUR = [System.Environment]::GetEnvironmentVariable("Path", "Machine")

## システム環境変数「Path」の先頭を「C:\openjdk-15.0.1\bin」にして、変数 $NEXT に格納する
$NEXT = "C:\openjdk-15.0.1\bin;$CUR"

## システム環境変数「Path」を変数 $NEXT で上書きする
[System.Environment]::SetEnvironmentVariable("Path", $NEXT, "Machine")

解説

以下 1〜6 は、PowerShell ウインドウでの操作である.

1. 入手したい JDK の在処を記す

## URL を変数 $RJDK に格納する
$RJDK = 'https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_windows-x64_bin.zip'

2. curl を使って 1 をダウンロードする

ダウンロードした際のファイル名を openjdk-15.0.1.zip とする

## Invoke-WebRequest が curl に該当する
Invoke-WebRequest -Uri $RJDK -OutFile openjdk-15.0.1.zip

3. 上記 2 で取得した openjdk-15.0.1.zip を展開する

openjdk-15.0.1.zip を展開する.

## Expand-Archive はあらゆる圧縮データを展開するコマンドである.
## Linux での xdg-open が該当する
Expand-Archive openjdk-15.0.1.zip

4. Cドライブ直下にフォルダ「openjdk-15.0.1」を複製する

上記 3 を実行するとフォルダ「openjdk-15.0.1_windows-x64_bin」が作成されている.

このフォルダを「C:\openjdk-15.0.1」として複製する

## Cドライブ直下に「openjdk-15.0.1」というフォルダ名でコピーする
Copy-Item -Force -Recurse openjdk-15.0.1_windows-x64_bin C:\openjdk-15.0.1

5. システム環境変数として「JAVA_HOME」を「c:\openjdk-15.0.1」として上書き定義する

次の要領で実行する. 完了までに 30秒くらい要することもある.

## bash で例えると export JAVA_HOME="C:\openjdk-15.0.1" ということ
[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\openjdk-15.0.1", "Machine")

6. システム環境変数「Path」の先頭に「C:\openjdk-15.0.1\bin」を追加する

次の要領で実行する. 完了までに 30秒くらい要することもある.

## 既存の $Path を取り出す
$CUR = [System.Environment]::GetEnvironmentVariable("Path", "Machine")

## システム環境変数「Path」の先頭を「C:\openjdk-15.0.1\bin」にして、変数 $NEXT に格納する
$NEXT = "C:\openjdk-15.0.1\bin;$CUR"

## システム環境変数「Path」を変数 $NEXT で上書きする
[System.Environment]::SetEnvironmentVariable("Path", $NEXT, "Machine")

上記 1 から 6 を連結させれば PowerShell スクリプトの完成である.
 

以上.