ksaitoの日記

日々試したことの覚え書き

mavenリポジトリを作る

nexusのSonatypeでMavenリポジトリを作ると以下のようなメリットがあります。

リポジトリを作るメリット

複数公開されているリポジトリを統合できる

Mavenリポジトリは、センターリポジトリのほかにGooglecodeやApache、codehouseからも提供されています。
個々の開発者が、これらのリポジトリ設定を環境毎に設定するのは手間がかかります。
一箇所で管理できれば、設定ミスでビルドに失敗する事もなくなります。

ローカルのリポジトリも統合できる

非公開のライブラリを共有したりリポジトリで公開されていないライブラリを個別に取り込む事ができます。

インストール

最新版をダウンロードして/usr/localに展開するだけでインストール完了です。

$ pwd
/usr/local
$ ls
bin  etc  games  include  lib  man  nexus-oss-webapp-1.9.2.4-bundle.tar.gz  sbin  share  src
$ sudo tar xfz nexus-oss-webapp-1.9.2.4-bundle.tar.gz 
$ sudo ln -s nexus-oss-webapp-1.9.2.4 nexus
$ ls
bin  etc  games  include  lib  man  nexus  nexus-oss-webapp-1.9.2.4  nexus-oss-webapp-1.9.2.4-bundle.tar.gz  sbin  share  sonatype-work  src
$

起動

起動スクリプトで起動します。

$ pwd
/usr/local/nexus
$ sudo ./bin/jsw/linux-x86-64/nexus start
Starting Nexus OSS...
Started Nexus OSS.
$ ./bin/jsw/linux-x86-64/nexus status
Nexus OSS is running (3705).
$ 

初期設定

http://localhost:8081/nexus/にアクセスすると起動画面が表示されます。

右上のログインを選択し"admin"でログインしてSecurity-Change Passwordメニューから初期パスワードを変更します。
次にRepositoriesメニューを選択して、TypeがProxyのリポジトリのConfiguration-Download Remote IndexをFalseからTrueに変更します。

暫くすると各リポジトリがダウンロードされます。

統合されたリポジトリ

リポジトリの中にhttp://localhost:8081/nexus/content/groups/public/というリポジトリがあります。
これは、複数リポジトリをグループ化したもので、各開発者は、このリポジトリだけを見ることになります。
リポジトリを選択してBrowse Indexでキャッシュされたリポジトリを参照することができます。

使い方

$HOME/.m2/settings.xmlに下記URLに記載されている設定を追加します。
http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html
settings-mirrors-mirror-urlのlocalhostの部分を実際のサーバ名に修正します。
各環境のmaven2の設定は、これだけです。

その他の操作

ここまでの設定でMavenのセンターリポジトリ、Googlecodeのリポジトリに格納されている全てのライブラリが使えるようになりました。
その他の操作としてnexusサーバに新規のJARやプラグインを追加したり、新規のリポジトリを追加したり、ユーザ毎に操作を制限したりできるようです。
このあたりは、またいずれ...