apache ivy を使ってみた
gradle で済ませられると楽なのだが、いろいろと自分にとっては不都合なこともあるので とりあえず ivy でなんとかならんかと。
ivy も結構面倒だがとりあえず使えるところまできたのでメモしておきます。
インストール
ここでは Ubuntu9.10 上でテストしています。 Ubuntuでは apt-get install ivy できたので、これで install できたのかと 思ったのですが実際にはうまくいかない。 aptしたivy はどこいってしまったのだろうか。
気を取りなおして手動インストール。 apache ivy のサイトから バイナリをダウンロードして展開して出てきた jar を ~/.ant/lib/ivy-2.2.0-rc1.jar に配置。 (もしまだ ant がインストールされていない場合は、apt-get install ant しておいてください。)
jdom.jar に依存する場合のテスト
jdom.jar に依存する Test.java
antでビルドするので、src/Test.java に配置しておきます。
ivy.xml
<?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="apache" module="hello-ivy"/>
<dependencies>
<dependency org="jdom" name="jdom" rev="1.1"/>
</dependencies>
</ivy-module>
ポイントは
<dependency org="jdom" name="jdom" rev="1.1"/>
だけです。
build.xml
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="hello-ivy" default="compile">
<target name="retrieve"><ivy:retrieve /></target>
<target name="init">
<property name="build.src" value="./src"/>
<property name="build.dest" value="./bin"/>
<!-- Compilation class path -->
<path id="compile.class.path">
<fileset dir="lib" includes="*.jar" />
</path>
</target>
<target name="compile" depends="init,retrieve">
<mkdir dir="${build.dest}" />
<javac
destdir="${build.dest}"
srcdir="src"
encoding="UTF-8"
>
<classpath refid="compile.class.path"/>
<include name="**/*.java" />
</javac>
</target>
</project>
すべてのファイルを配置
以下のように配置しておきます。
- test/
- ivy.xml
- build.xml
- src/
- Test.java
compile する
$ ant
これで build.xml の デフォルトタスクである compile が実行され compile の依存タスクである retrieve が実行され、 ここで依存する jdom.jar (とそれに依存する jar)が ivy により ダウンロードされて lib/ 以下に配置されます。
それから compile タスクが実際に実行されるので Test.java に jdom.jar に依存した記述があっても問題なくコンパイルされ ./bin/Test.class が生成されます。