VS Code のRemote Containerで、MavenのローカルレポジトリーをWorkspace配下にする

VS CodeのRemote Containerにおいて、VS Codeが microsoft/vscode-dev-containers で提供するJavaの雛形では、Mavenのローカルレポジトリーの場所は /home/vscode/.m2/repository です。

しかし、ローカルレポジトリーがこの場所の場合、DevContainerの設定が変更になってリビルドが行われた際に、キャッシュが行われないため、リモートレポジトリーからのライブラリーのダウンロードが都度最初から行われ、相応の時間がかかります。

これを避けるために、npm等と同様、MavenのローカルディレクトリーをWorkspaceの配下にすることを考えます。なお、ホスト側のローカルレポジトリーのディレクトリーを、DevContainer側でマウントする方法も考えられますが、GitHub Codespacesとの相互運用のため本稿ではこの方法は採用しません。

Remote ContainerでMavenのローカルディレクトリーをWorkspace配下にするには、環境の作成時に、Mavenの設定ファイルであるsettings.xmlを作成します。

microsoft/vscode-remote-try-java の構成に従ってDevContainerを構成している場合っは、.devcontainer/Dockerfile の中に以下の記述を作成します。

RUN sudo -u vscode sh -c 'mkdir -p /home/vscode/.m2'
RUN echo '<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">\n\
  <localRepository>/workspaces/vscode-remote-try-java/.m2/repository</localRepository>\n\
</settings>\n' > /home/vscode/.m2/settings.xml

以上の設定を含んだGitレポジトリーをcloneし、Remote Containerの環境を作成した後の動きは、通常のVS CodeJavaの開発を行う場合と同様です。

上の画像の通り、ワークスペース配下の .m2/repository 配下にライブラリーがダウンロードされています。

VS CodeのRemote Containerにおいて、MavenのローカルレポジトリーをWorkspace配下にする方法について解説しました。