リポジトリを追加する

続いてIvyでセントラルリポジトリ以外のリポジトリを使用する方法を紹介しよう。ここでは例として国産のオープンソースフレームワークとして有名はThe Seasar Projectが提供するMavenリポジトリを参照し、同プロジェクトが提供しているSAStruts(Strutsを拡張したWebフレームワーク)とその依存ライブラリをダウンロードするビルドファイルを作成してみる。

ivy.xmlと同じフォルダにivysettings.xmlというファイル名で以下の設定ファイルを作成する。

<ivysettings>
  <settings defaultResolver="chained"/>
  <resolvers>
    <chain name="chained" returnFirst="true">
      <ibiblio name="seasar" m2compatible="true" root="http://maven.seasar.org/maven2/" />
      <ibiblio name="ibiblio" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>

Ivyではresolverを追加することでMavenリポジトリやIvyリポジトリを追加することができる。タグはMavenリポジトリ用のresolverを追加する設定で、root属性でリポジトリのURLを指定する。

ivy.xmlには以下のようにSAStrutsと使用するバージョンを記述する。

<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
    <info organisation="SAStruts" module="Hello SAStruts"/>
    <dependencies>
        <dependency org="org.seasar.sastruts" name="sa-struts" rev="1.0.4-sp1"/>
    </dependencies>
</ivy-module>

さきほどと同様、retrieveターゲットを実行すると、以下のようにSAStrutsと、SAStrutsが依存するJARファイル群がlibフォルダにダウンロードされるはずだ。

まとめ

本稿で説明したとおり、Apache Ivyを使用することでAntでもMavenのパワーの一部を利用できることがおわかりいただけたことと思う。Ivyにはこの他にも様々な機能があり、依存関係をHTMLレポートとして出力することなどもできる。

図3: Ivyで生成したレポート

Mavenの機能の中でもライブラリの管理機能は非常に便利であり、Ivy以外にもMavenを使わずにMavenリポジトリのみを利用しようというツールはいくつか存在する。Mavenを使うのは面倒だが、ライブラリ管理機能は利用したい、というニーズは多いのだろう。

冒頭でも述べたとおり、MavenはMavenのルールに従えば便利だが、融通がきなかい面もある。Mavenの導入は難しいケースであってもIvyなら比較的容易に導入できるはずだ。ライブラリ管理を省力化するための手段としてIvyを試してみてはどうだろうか。