Nexusとは?
NexusはSonatype社が提供するWebアプリケーションで、Webブラウザ上からMavenリポジトリの管理を行うことができ、外部のリポジトリのプロキシ/キャッシュとしても動作する。同種のツールには、Artifactoryなどがある。
IDEの範疇からは外れてしまうが、Java開発においてMavenを使用する場合に、開発したソフトウェアをデプロイしたり、外部のMavenリポジトリに存在しないライブラリなどを使用するために、開発環境の一部としてプライベートリポジトリを立てる必要に迫られることがある。Nexusはこのような場合に有用なツールだ。
Nexusは無償で利用可能なOSS版に加え、有償のProfessional版が提供されている。本稿ではOSS版の導入手順と基本的な利用方法を紹介する。
Nexusのインストール
NexusのWebサイトには、Jettyがバンドルされたアーカイブとwarファイルが用意されている。すぐに試したい場合はバンドル版をダウンロードするといいだろう (ここではLinux上にバンドル版のNexusをインストールするという想定で説明を行う)。
ダウンロードしたアーカイブを適当なディレクトリに展開し、コマンドラインから以下のようにして起動しよう。
$ unzip nexus-2.0.3-bundle.zip
$ cd nexus-2.0.3/bin
$ ./nexus start
Webブラウザから「http://localhost:8081/nexus/」にアクセスすると以下のような画面が表示され、Nexusが正常に動作していることがわかる。
リポジトリを追加してみよう
リポジトリの追加などの管理作業を行うには、画面右上の「Log In」リンクからログインする必要がある。デフォルトではユーザ名 : admin、パスワード : admin123でログイン可能だ。
Repositoriesタブではリポジトリの一覧が表示されるが、ここで「Add」→「Hosted Repository」を選択することで、Nexusが動作しているマシン上のディレクトリをMavenリポジトリとして公開することができる。
このリポジトリには、WebDAVでアーティファクトのデプロイが可能だ。pom.xmlには、デプロイ先のリポジトリの情報を以下のように指定する (URLはNexusに追加したリポジトリのURLに変更すること)。
<distributionManagement>
<repository>
<id>nexus</id>
<url>http://localhost:8081/nexus/content/repositories/private/</url>
</repository>
</distributionManagement>
また、ユーザのホームディレクトリ配下の.m2/settings.xmlに認証情報を指定する。デフォルトではユーザ名 : deployment、パスワード : deployment123でデプロイを行うことができる。
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<servers>
<server>
<id>nexus</id>
<username>deployment</username>
<password>deployment123</password>
</server>
</servers>
</settings>
以上の設定を行うことで、「mvn deploy」コマンドでNexusのHosted Repositoryに、WebDAV経由でアーティファクトのデプロイを行うことができる。
なお、NexusではWebブラウザ上からpom.xmlやアーティファクトを選択してアップロードを行うこともできる。もともとMaven化されていないライブラリをリポジトリに配置する場合などは、Webブラウザからアップロードすると便利だ。
Mavenリポジトリのプロキシとして使用する
リポジトリの追加時に「Proxy Repository」を選択することで、外部のMavenリポジトリを登録することも可能だ。Nexusは登録された外部リポジトリのプロキシとして動作するため、pom.xmlにはNexusが払い出したリポジトリのURLを記述しておけばよい。
また、複数のリポジトリを参照しなくてはならない場合は、「Repository Group」を登録しておくと便利だ。Nexus上に登録されている複数のリポジトリを、単一のリポジトリとしてアクセスできるようにすることができるため、pom.xmlにはグループ化されたリポジトリのURLだけ記載しておけばよい。一度ダウンロードしたアーティファクトはNexusにキャッシュされるため、複数人で使用する場合はダウンロード時間を節約することができるだろう。
まとめ
本稿ではMavenのプライベートリポジトリを構築する場合に使用するであろう機能を中心に紹介したが、Nexusこの他にもリポジトリの内容をブラウズや検索など便利な機能を備えている。Mavenを活用するのであれば必須のツールといってもいいだろう。
SonatypeのWebサイトではNexusに関する非常に充実した内容の書籍が無償で公開されている。PDF版のダウンロードにはユーザ情報の登録が必要だが、オンラインHTML版は登録不要で参照できるのでNexusに興味のある方は是非ご覧いただきたい。