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 CodeでJavaの開発を行う場合と同様です。
上の画像の通り、ワークスペース配下の .m2/repository
配下にライブラリーがダウンロードされています。
VS CodeのRemote Containerにおいて、MavenのローカルレポジトリーをWorkspace配下にする方法について解説しました。