1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Mavenでプロジェクト毎にローカルリポジトリを切り替える方法

Posted at

1. はじめに

これまで、Maven で複数のプロジェクトにおいて異なるローカルリポジトリや依存関係を利用する際、プロジェクトごとに .m2/repository_sample といったディレクトリを用意し、都度そのディレクトリを .m2/repository にリネームして切り替えていました。

しかし、この方法は手動での操作が煩雑な上、今どのMavenリポジドリがアクティブなのか気にする必要があり、とてもストレスでした。

そこで、どうにかこの課題を解決できないかと調査した結果、settings.xml を活用する方法が有効であると分かりました。
この記事では、その方法を備忘録としてまとめます。

2. Maven の settings.xml について

Maven には大きく分けて 2 つの settings.xml があります。

  • グローバル settings.xml
    Maven インストールディレクトリ内の conf/settings.xml に存在し、全体に共通の設定が記述できます。

  • ユーザー settings.xml
    通常はユーザーのホームディレクトリ(Windows では C:\Users\<ユーザー名>\.m2\settings.xml)に存在します。初期状態では存在しない場合が多いため、必要に応じて自分で作成します。

また、プロジェクトごとにカスタム設定を適用したい場合、settings.xml を別ファイルとして作成し、実行時にそのファイルを指定する方法が利用できます。

3. プロジェクトごとのローカルリポジトリ設定ファイルの作成

例えば、プロジェクト専用のリポジトリとして repository_sample を使用する場合、以下のような内容の設定ファイル(例: sample_settings.xml)を作成します。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"                 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- ローカルリポジトリのパスを指定(絶対パスを推奨) -->
  <localRepository>C:/Users/[ユーザー名]/.m2/repository_sample</localRepository>
  
  <!-- 必要に応じて、プロキシ、ミラー、サーバ認証情報などの設定を追加できます -->
</settings>

このファイルをプロジェクト内や共通の設定ディレクトリに配置し、Maven 実行時に指定することで、該当プロジェクトではこのローカルリポジトリを使用できます。

4. コマンドラインからの実行方法

コマンドラインでカスタムの settings.xml を指定して Maven を実行する場合は、-s オプションを使用します。
例えば、プロファイル stg を有効にしてパッケージ化する場合、以下のように実行します。

mvn -s sample_settings.xml package -P stg

※ 設定ファイルは絶対パスで指定しても問題ありません。

このコマンドにより、Maven はデフォルトの ~/.m2/settings.xml の代わりに sample_settings.xml 内の設定を読み込み、指定されたローカルリポジトリ(この例では repository_sample)が使用されます。

5. IntelliJ IDEA での設定方法

普段 IntelliJ IDEA を使用して開発しているため、IntelliJ 内でもプロジェクトごとにカスタムの settings.xml を利用して Maven を実行できるような設定を行いました。

5.1. Maven のグローバル設定の変更

  1. IntelliJ の設定画面を開く
    メニューから「ファイル」→「設定」を選択します。
  2. Maven の設定を確認する
    左側のメニューから「ビルド、実行、デプロイ」→「ビルドツール」→「Maven」を選択します。
  3. Custom settings.xml の指定
    「ユーザー設定ファイル」の欄に、使用したいカスタム settings.xml(この場合は sample_settings.xml)のパスを入力します。
    これにより、IntelliJ 内で Maven を実行する際に、指定した設定ファイルが使用されます。
    スクリーンショット 2025-03-10 212349.png

5.2. Run/Debug Configuration での指定

  1. Run/Debug Configuration の編集
    メニューから「実行」→「実行構成の編集(R)...」を選択します。
  2. Maven 実行構成の作成または編集
    既存の Maven 実行構成を選択するか、新規作成します。
  3. VM Options / Command-line Options に設定
    必要に応じて、-P stg やその他のオプション(例: -Dmaven.repo.local)を追加できます。
    通常、settings.xml にリポジトリの設定を記述している場合、追加のオプションは不要です。
    また、個別に使用するユーザー設定を切り替えたい場合は、「Maven オプション」→「設定から継承」のチェックボックスを外し、個別に settings.xml を指定することも可能です。
    image.png

これらの設定により、IntelliJ IDEA から Maven のビルドを実行した場合でも、カスタムの settings.xml に記載されたリポジトリ設定が適用されます。

6. まとめ

プロジェクトごとにリポジトリ名を分けるためには、カスタムの settings.xml(例: sample_settings.xml)を作成し、以下の方法で利用します。

コマンドラインの場合:

mvn -s sample_settings.xml package -P stg

IntelliJ IDEA の場合:
Maven のユーザー設定で sample_settings.xml のパスを指定するか、Run/Debug Configuration で適切なオプションを設定する。

これにより、プロジェクト固有の依存関係キャッシュ管理や環境構築が容易になり、ビルド時にどのリポジトリがアクティブかを気にする必要がなくなりました。

7. 参考情報

8. 追記

最初は、ターミナルから実行する際に直接

mvn -Dmaven.repo.local="C:/Users/xxxx/repository_sample" -P dev clean package

のように指定できるのではないかと思っていましたが、うまくいかず…。
そのため、今回のように settings.xml を活用する方法を採用しました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?