Ivyで依存モジュールを取得するサンプル
次のプロジェクト(の依存プロジェクト)で「ivy.xml」が出てきたのでメモ。
IvyはAntに組み込んで使えるモジュールの依存関係マネージャで、ivy.xmlはその設定ファイルです。
- モジュールの依存関係を「ivy.xml」に記述することで、
- 依存モジュールの解決、および取得をAntから実行できます。
- さらに、依存関係のレポート機能とかもあるらしい。
ということで、以下に依存関係を定義して、そこから依存モジュールを解決し取得するまでの手順をまとめてみます。なお、内容はIvy - Quick Startのぱくりなので、ちゃんと知りたい人はそちらをどうぞ。
1.「ivy.xml」を作成
「ivy.xml」を作成し、依存モジュールの情報を書きます。
- info要素に、モジュールの情報を、
- 「dependencies」-「dependency」に依存モジュールを並べます。
<?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="ivy-test" module="test"/> <!-- 依存モジュールを書く --> <dependencies> <!-- aopallianceとguiceに依存 --> <dependency name="aopalliance" org="aopalliance" rev="1.0"/> <dependency name="guice" org="com.google.code.guice" rev="1.0"/> </dependencies> </ivy-module>
詳細はIvy File のリファレンスを参照ください。
2.「build.xml」を書く
「build.xml」を作成し、モジュール取得コマンドを実行するAntターゲットを書きます。
- 「ivy;retrieve」がモジュール取得タスクです。
- 万人のためのオートメーション: Ivy による依存関係の管理を参考に、「download-ivy」でivyも自動でダウンロードするようにしてみました。
<?xml version="1.0" encoding="UTF-8"?> <project default="retrieve" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant"> <!-- プロキシ --> <setproxy proxyhost="foo.com" proxyport="80" /> <!-- ivyの配置先 --> <property name="ivy" value="ivy"/> <!-- 依存モジュールをダウンロードするタスク --> <target name="retrieve" depends="download-ivy" > <ivy:retrieve /> </target> <!-- ivyをダウンロードしてタスクを定義するタスク --> <target name="download-ivy"> <mkdir dir="${ivy}"/> <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/2.0.0/ivy-2.0.0.jar" dest="${ivy}/ivy.jar" usetimestamp="true"/> <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${ivy}/ivy.jar"/> </target> </project>
3.Antターゲットを実行
あとは、2で作成したターゲットを実行するだけ。実行すれば、「./lib」以下に依存モジュールがダウンロードされてくるはずです。