📦 MavenとNexusの成果物管理の自動
ソフトウェア開発の現場では、日々新しいコードがビルドされ、たくさんの「成果物(アーティファクト)」が生まれます。これらの成果物(例: .jar
ファイル)を効率よく管理するために、リポジトリマネージャーというツールが使われます。
今回は、その代表的なツール「Nexus」とMavenを連携させて、ビルドされた成果物を自動的に保存・管理する方法を、初心者の方にも分かりやすく解説します。
🧐 なぜNexusが必要なの?
GitHubのようなバージョン管理システムは、ソースコードを管理するには最適ですが、ビルドされた成果物を保存するのには向いていません。その理由は主に2つあります。
サイズ制限: 成果物はソースコードよりもはるかにサイズが大きくなることが多く、GitHubにはそのための十分な容量がありません。
目的の違い: GitHubはコードの変更履歴を追うためのもの。成果物は、デプロイや他のプロジェクトからの参照のために、一元的に管理する必要があります。
そこで登場するのがNexusです。Nexusは、Mavenプロジェクトの成果物を効率的に保存・管理するための「プライベートな倉庫(リポジトリ)」のような役割を果たします。これにより、成果物の一元管理が可能になり、チーム全体での開発プロセスがスムーズになります。
🛠️ ステップ1: Nexusサーバーを準備する
Mavenプロジェクトと連携するために、まずNexusサーバーを立ち上げる必要があります。ここでは、大まかな流れを説明します。
サーバーの用意:
AWS EC2などのクラウドサービスでサーバーを立ち上げます。
Nexusの前提条件であるJava 8をインストールします。
Nexusのインストール:
公式サイトからNexusの最新版をダウンロードし、展開します。
セキュリティのため、Nexusを
root
ユーザーではなく、専用のユーザー(例:ec2-user
)で実行するように設定します。
Nexusの起動とアクセス:
bin
ディレクトリ内の起動スクリプトを実行してNexusを起動します。Nexusはデフォルトでポート8081で動作します。このポートへのアクセスを許可する設定を行い、ブラウザからサーバーのIPアドレスとポート番号(例:
http://<サーバーIP>:8081
)でアクセスします。
初期設定:
初回アクセス時に、デフォルトの管理者ユーザーでログインし、パスワードを変更します。
ログイン後、Nexusの管理画面で、ビルド成果物を保存するためのリポジトリが用意されていることを確認します。
🤝 ステップ2: MavenとNexusを統合する
次に、Mavenプロジェクトをビルドした成果物が、ローカルマシンではなくNexusにデプロイされるように設定します。
1. pom.xml
の編集
プロジェクトのpom.xml
ファイルに、Nexusリポジトリの情報を追記します。
<distributionManagement>
: このタグの中に、成果物のデプロイ先となるNexusリポジトリの情報を定義します。スナップショットリポジトリ: 開発中のビルド(例:
1.0.0-SNAPSHOT
)を保存するためのリポジトリ。リリースリポジトリ: 本番環境にデプロイできる完成したビルド(例:
1.0.0
)を保存するためのリポジトリ。
pom.xml
への追記例
<distributionManagement>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://<NexusサーバーIP>:8081/repository/maven-snapshots/</url>
</snapshotRepository>
<repository>
<id>nexus-releases</id>
<url>http://<NexusサーバーIP>:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
2. settings.xml
の編集
MavenがNexusに成果物をデプロイする際には、認証情報(ユーザー名とパスワード)が必要です。この情報は、settings.xml
ファイルに記述します。
~/.m2/settings.xml
(Linux/Mac)またはC:\Users\<ユーザー名>\.m2\settings.xml
(Windows)を開きます。<servers>
タグの中に、pom.xml
で定義したid
と、Nexusのユーザー名・パスワードを記述します。
settings.xml
への追記例
<servers>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
注意: パスワードを平文で記述するのはセキュリティ上のリスクがあります。本番環境では、暗号化などの対策を検討しましょう。
🚀 ステップ3: 成果物をNexusにデプロイする
準備が整ったら、あとはMavenのコマンドを実行するだけです。
ビルドとデプロイを実行:
プロジェクトのルートディレクトリで、
mvn deploy
コマンドを実行します。このコマンドは、コンパイルからパッケージ化までを行い、最後に成果物をNexusリポジトリにアップロードします。
Nexusで成果物を確認:
Nexusの管理画面にログインし、対応するリポジトリ(スナップショットまたはリリース)を確認します。
ビルドされた成果物が、プロジェクトのバージョン番号やタイムスタンプ付きで保存されているはずです。
これで、あなたのMavenプロジェクトとNexusの連携は完了です!この仕組みを導入することで、ビルドと成果物管理のプロセスが自動化され、開発効率が大きく向上します。