Sonatype Nexus で Maven リポジトリを構築しよう (1.概要編)

投稿者 : OSCA

関東地方の美しい夜景を観にいこう。 夜景サイト「夜景散歩」で夜景スポットを検索

 今回から始まる本連載では、独自の Maven リポジトリを構築できるパッケージリポジトリ管理ソフトウェア「Sonatype Nexus」で Maven リポジトリを構築する方法について解説します。 初回の本稿では、Sonatype Nexus の概要について説明します。

パッケージリポジトリ管理ソフトウェアが必要な理由

 Java のソフトウェア開発において、Apache Maven によるライブラリ依存関係の解決がとても強力であることは、本稿をご覧になっている読者の方には説明する必要がないことでしょう。 Apache Maven というツールと、ライブラリを保管する「リポジトリ」との連携により、とても簡単に Java のライブラリを利用することができます。

 しかしビジネスにおけるソフトウェア開発では、特定のお客様や自社サービスのためにソフトウェアを開発します。 そのような場合、作成したソフトウェアをどのように管理しているでしょうか? このようなプライベートな(非公開の)ソフトウェアの場合は、Maven セントラルリポジトリのような公開されたリポジトリに配置する訳にはいきませんので、プライベートなリポジトリを構築してソフトウェア成果物を登録(デプロイ)し、Maven にそのプライベートリポジトリを参照させることで、プライベートライブラリを利用できるようにします。

 このようにプライベートなリポジトリを構築するためのソフトウェアとして「パッケージリポジトリ管理ソフトウェア」が便利で、その製品の1つとして Sonatype 社が開発している Nexus が便利だというわけです。

Sonatype Nexus の概要

 Sonatype 社の開発する Nexus というパッケージリポジトリ管理ソフトウェアは、ブラウザで管理画面にアクセスして、その管理画面を通してライブラリを管理するタイプのサーバーソフトウェアです。 2018年03月現在でバージョン 3.9 が最新で、OSS無償版と有償版の2つが公開されています。 無償版と有償版の違いは、通知機能の有無、テクニカルサポートの有無、ログイン認証方式の違い(有償版だとLDAPなどの認証が利用できる)がありますが、主機能であるライブラリ管理おいては違いほとんどありません。

 また、本稿では Maven リポジトリを構築するために Nexus を利用しますが、実は Nexus は Maven だけのためのソフトウェアではなく、npm, NuGet, RubyGems, Docker, P2, OBR, APT and RPM などのパッケージも管理することができます。 様々な言語・プラットフォームのパッケージもまとめて管理できるのが大きな特徴です。

Sonatype Nexus の主な機能

 Sonatype Nexus の主な機能は「リポジトリ機能」「キャッシュ機能」です。 それぞれどのような機能なのか概要を説明します。

リポジトリ機能

 リポジトリ機能は Nexus の主機能で、様々なパッケージやライブラリを保管する機能です。 「ここを参照すればライブラリを利用できる」という状況を作り出してくれるので、開発者はライブラリ収集のためにインターネットを右往左往する必要がなくなります。 一言でリポジトリと言っても、Nexus では保管するライブラリの種類によって、いくつかのリポジトリの種類に分類できます。 リポジトリの種類については、後ほど別途説明します。

プロキシ・キャッシュ機能

 プロキシ・キャッシュ機能は、Maven のセントラルリポジトリなどで公開されているライブラリをコピーしてキャッシュする機能です。 この機能は、Nexus を開発拠点のローカルネットワーク内に構築した場合に有効です。 一般的なプロキシサーバーの効果と等しく、一度 Nexus にライブラリをキャッシュしてしまえば次回からはローカルエリアネットワークだけの通信だけでライブラリを取得できるようになります。

 逆に Nexus をレンタルサーバーなどに構築した場合は、けっきょくインターネットへの通信が発生することに変わりがないのであまり意味がないでしょう。 但し Meven セントラルリポジトリは海外にあるでしょうから、国内のレンタルサーバーに Nexus をインストールしたのであれば通信距離(ステップ数)が減るので、効果が体感できる場合もあるかもしれません。

Nexus で管理するリポジトリの種類

 前述の通り Nexus の主機能はリポジトリ機能ですが、Nexus で作成できるリポジトリは保管するライブラリの種類ごとに次のように分類することができます。

名称説明
プロキシリポジトリ 上述のプロキシ・キャッシュ機能を利用して、インターネットで公開されているリポジトリのライブラリをキャッシュしたものを保管するリポジトリ。
サードパーティリポジトリ インターネット上の公開リポジトリで公開されていないライブラリ(ホームページから手動でダウンロードするものや、自分でコンパイルしたもの)を保管するリポジトリ。 Oracle の JDBC ライブラリなどがそうで、そういうものを登録しておく。
プライベートリポジトリ プロジェクト固有のライブラリで、インターネットに公開せずにプライベートで利用するものを保管するリポジトリ。
グループリポジトリ 複数のリポジトリをまとめて、1つのリポジトリであるかのように見せるリポジトリ。 一般的には、上記のプロキシリポジトリ、サードパーティリポジトリ、プライベートリポジトリをこのグループリポジトリとして1つにまとめることで、このグループリポジトリにアクセスすることで3つのライブラリの存在を意識せずに参照できるようにする。

 Nexus 上では、このようにリ保管するライブラリの特徴ごとにリポジトリを作成するようになります。

次稿はインストールの解説

 本稿では Sonatype Nexus の概要について説明しましたが、実際に触ってみないことにはイメージが沸かないかと思います。 次稿ではインストール方法について解説します。 実際にインストールして画面を触ってみたあとに、また本稿に戻って読み返してみるとイメージが明確になると思いますので、ぼんやりとしかイメージが分からなかった人も、とりあえず先に進んでみて頂ければと思います。

Apache Maven の目次へ戻る

更新履歴

  • 2016年02月15日 – 本稿を執筆しました。
  • 2018年03月03日 – 最新の状況・バージョンに合わせて記事を修正しました。

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。
個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca