GitHub Codespacesがなかなか個人向けに来ないので、changelog.comで宣伝していたGitPodを試しています。 どうも公式のJava向けの説明が古いようで、既にDeprecatedになっているtheiaを前提としているため、調べたことをメモしておきます。
最新のJavaを使う
普通に gitpod/workspace-full
イメージ内でJavaを起動すると、Zuluの11が使われていることがわかります:
$ java --version openjdk 11.0.12 2021-07-20 LTS OpenJDK Runtime Environment Zulu11.50+19-CA (build 11.0.12+7-LTS) OpenJDK 64-Bit Server VM Zulu11.50+19-CA (build 11.0.12+7-LTS, mixed mode)
SDKMANやhomebrewが入っているので好きなバージョンを入れてもいいですが、ワークスペースを立ち上げる度に実行するのは面倒なので、 azul/zulu-openjdk
のようなイメージを使ってしまうのが楽でいいと思います。
# .gitpod.yml image: azul/zulu-openjdk:16
Mavenの依存をダウンロードしておく
Mavenの場合、dependency:go-offline でプラグインや依存をすべてダウンロードできます。 これをイメージ作成時に実行しておくのが良さそうです。
# .gitpod.yml image: azul/zulu-openjdk:16 tasks: - init: ./mvnw -B dependency:go-offline
Gradleの依存をダウンロードしておく
Gradleには標準的な手法がないので、単にビルドを回しておきます。
# .gitpod.yml image: azul/zulu-openjdk:16 tasks: - init: ./gradlew build
Extensionを導入する
Java向けExtensionを3つ入れて様子を見ています。
# .gitpod.yml vscode: extensions: - redhat.java - vscjava.vscode-java-dependency - vscjava.vscode-java-debug
ポートを開けておく
Spring Framework標準の8080ポートを開けておく場合は ports
の設定 で足ります。
が、URLの取得にgp
コマンドが必要なので azul/zulu-openjdk
ではなく gitpod/workspace-full
をベースとしたイメージを用意する必要があります。URLの決定ロジックがいまのところ非常に単純なのでなくてもなんとかなりそうではありますが、一応。
# .gitpod.yml image: file: .gitpod.Dockerfile ports: - port: 8080
# .gitpod.Dockerfile FROM gitpod/workspace-full RUN bash -c ". /home/gitpod/.sdkman/bin/sdkman-init.sh && sdk install java 16.0.2-zulu"
バッジを付ける
バッジはDiscourseに落ちています。 README.md
とかに貼っておくと、Contributorの敷居が下がって良いんじゃないでしょうか。