Apache Archiva を試してみた

Continuum を使って色々作業をしているうちに、ふとしたことから Apache Archiva に行き着いた。Mavenリポジトリ管理のコストを大幅に低減するツールで、売り文句は「The Build Artifact Repository Manager」。機能としては、大きく 3 つが用意されている。

また、これらに対して JAAS のロールベースの認証機能が組み込まれているのも魅力の一つ。開発者から見たメリットは「意識しなければならないリモートリポジトリの数が減る」こと。「あのアーティファクトはこのリポジトリで、このプラグインはあのリポジトリで、このアーティファクトは自社で開発したものだから社内ローカルのリポジトリで…」なんてことに煩わされなくなるのは嬉しい。

管理者から見ると、複数のリポジトリを集中管理出来ることがメリットとなる。Archiva 内には複数のリポジトリを設けて、それぞれに認証を施すことが出来る。仮に開発プロジェクト A / B / C の 3 つがあるが、個々の開発プロジェクトは他の開発プロジェクト独自のアーティファクトをアレコレすることは出来ないようにしたいという場合は…。

もちろん、DAV を使ってアーティファクトリポジトリに書き込み可能にして、書き込み可能な人間を HTTP の認証で制限…なんてことをやっても、同じようなことは実現出来ると思う。でも Archiva を使えば、その辺りの設定がかなり簡単。いちいち httpd.conf などをいぢらなくてもよい…って、まだその辺りまで厳密に検証出来てないけどね。

これはかなり魅力的なモデルに見える。Maven を使う上で、この「公開されたリポジトリに存在しないアーティファクト」の扱いはかなり厄介だった。自作のコンポーネントMavenアーティファクト化した瞬間に、Ant 以前の暗黒時代が広がるからだ。そのコンポーネントMaven の流儀に従って全開発者にインストールしてもらったり、開発プロジェクト毎に独自の Maven リポジトリを立てたりするのはもうまっぴら。誰かに全開発プロジェクトの面倒を見て欲しいと思っていたトコだから、嫌が応にも期待が高まってしまう。

実際に使ってみると、Web ベースのインタフェースは使いやすいし、操作で迷うところもあんまりないように思う。リポジトリのプロキシが外部のリモートリポジトリにアクセスする際に利用する HTTP プロキシの設定方法だけは分かりにくかったけど、「Network Proxies」で HTTP プロキシの定義を行った上で、「Proxy Connector」で各リモートリポジトリの定義に利用する HTTP プロキシを設定するだけだった。

実際に納品する pom.xmlリポジトリ定義が社内ローカルの URL でいいの? っていう問題はあるけど、どのみち独自リポジトリを立てたりした段階で pom.xml が汚れることは目に見えている。ちょっと本格的に導入を考えてみようと思う。

Archiva は Continuum 同様、スタンドアロンとして起動させることも、アプリケーションコンテナにデプロイして使うことも可能。とは言え、Continuum を JBossTomcat にデプロイして使っているトコってどのくらいあるんだろう…。