Deletions are marked like this. | Additions are marked like this. |
Line 69: | Line 69: |
上記では、ivy.xmlに依存関係を記述してそれを解消する場合だが、ivyではMavenのpom.xmlを依存関係の定義として扱うことができる。 IvyDEでは依存ライブラリの検索機能がないため、人手でライブラリの検索を行い人手でそれをivy.xmlに記述しなければならないが、 Maven用のプラグインm2eclipseを使うと、この作業が非常に楽になる。 |
|
Line 73: | Line 77: |
* POMファイルにdependencyを追加してみる。この時点ではEclipseのビルドパスに依存ライブラリは追加されない。 | * POMファイルにdependencyを追加してみる。pom.xmlを右クリックして「Maven>Add Dependency」を選択し、所望のライブラリを検索する。この時点ではEclipseのビルドパスに依存ライブラリは追加されない。 |
Line 77: | Line 81: |
<conf defaultResolver="ibiblio"/> <resolvers> <ibiblio name="ibiblio" /> </resolvers> |
<conf defaultResolver="ibiblio"/> <resolvers> <ibiblio name="ibiblio" /> </resolvers> |
Line 86: | Line 90: |
* pom.xml[compile, runtime]というノードが現れ、そこに依存ライブラリが現れる。 | |
Line 87: | Line 92: |
== antを使う == | pom.xmlに依存ライブラリを追加・削除などした場合には、pom.xml[compile, runtime]を右クリックし、メニューからResolveを選択することでpom.xmlの変更内容が反映される。 |
Line 89: | Line 94: |
== Antを使う == Antを使うには、上記のivy.xml, pom.xmlのいずれの場合でも、そのままでは依存ライブラリをantビルドから扱うことはできない。 それらは、リポジトリの中にあるので、Antビルドファイルからは見えないからだ。 Antで扱うには、それらをいったんローカルなフォルダにコピーしてくる必要がある。これを行うのが、Ant用のタスクorg.apache.ivy.antである。 ivy.xmlの場合 |
|
Line 91: | Line 103: |
<!-- ================================= target: resolve ================================= --> <target name="resolve" description="--> retrieve dependencies with ivy"> <ivy:retrieve /> </target> |
<target name="resolve"> <ivy:retrieve /> </target> |
Line 101: | Line 109: |
pom.xmlの場合 |
IvyDEの使い方
ここでは、Eclipse用のプラグインIvyDEを使って、できるだけ簡単に依存関係の定義・解決と、Antのビルドファイルからそれを使う方法をさぐってみる。
IvyDEはEclipse用のプラグインである。2009/12現在のバージョンは2.0.0。Eclipseは3.3を利用している。
IvyDEのインストール
アップデートサイトから簡単にインストールできる。
単純に新規リモートサイトとして
- Apache Ivy update site
とすれば後はEclipseがよきにはからってくれる。
Antのクラスパスの設定
IvyDEをEclipseにインストールすると、IvyDEプラグインと共に、自動的にivy本体のjarファイルもEclipseのpluginsフォルダに格納される。
とりあえずは不要だが、最終的にはAntを使いたいので、AntからIvyのタスクを呼び出せるようにしなければならない。そのためには、このIvy本体のjarファイルをAntのクラスパスに登録しておく。
これをやっておかないと、Antを実行したときに、
ビルド・ファイル: C:......build.xml resolve: ビルドに失敗しました。 C:.....build.xml:7: Problem: failed to create task or type antlib:org.apache.ivy.ant:retrieve Cause: The name is undefined.
というエラーが発生する。
「ウインドウ>設定」メニューを選択し、クラスパスタブのAntホーム項目を選択。外部jarファイルの追加をクリックし、Eclipseのpluginsフォルダ直下の org.apache.ivy_*.jarを選択すればよい。
ivy.xmlの作成と編集
ivy.xmlに依存ライブラリを記述して、それをEclipseプロジェクトのビルドパスに含める。 こうすることにより、そのプロジェクト内のJavaソースから依存ライブラリを利用することができる。
- ごく普通にEclipseにてJavaプロジェクトを作成する。
そのプロジェクトを選択し「ファイル>新規作成>その他」をメニューを選択。IvyDEからIvy fileを選択する。「次へ」を押して必要事項を記入。Containerにはこのプロジェクトを指定、Organization, Moduleはivy.xmlに指定したいものを入力。
- ivy.xmlが作成される。
- ivy.xmlにdependencyを記述する。例えば以下のようになる。
<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="cryptomedia" module="ivyTest" status="integration"></info> <dependencies> <dependency org="org.apache.wicket" name="wicket" rev="1.4.4"/> </dependencies> </ivy-module>
- ivy.xmlを右クリックして、Add Ivy Libraryを選択し、表示されたダイアログで「終了」を選択。
- すると、プロジェクトにivy.xmlとは別に「ivy.xml[*]」というノードが現れる。それを展開してみると依存ライブラリが表示される。
- Eclipseのビルドパスにそれらのライブラリが追加されているので、Javaソースを作成して、そのライブラリを呼び出すようなコードを書くことができる。
依存ライブラリを追加あるいは削除したい場合は、単純にivy.xmlを編集すれば保存した途端に、追加あるいは削除されたdependencyが解消される。 同時にビルドパス上のライブラリから不要なものが消え、必要なものが追加される。
Maven2のPOMファイルの利用
上記では、ivy.xmlに依存関係を記述してそれを解消する場合だが、ivyではMavenのpom.xmlを依存関係の定義として扱うことができる。 IvyDEでは依存ライブラリの検索機能がないため、人手でライブラリの検索を行い人手でそれをivy.xmlに記述しなければならないが、 Maven用のプラグインm2eclipseを使うと、この作業が非常に楽になる。
以下はm2eclipseプラグインがインストール済みであるものとする。
- Javaプロジェクトを作成する。
- プロジェクトを右クリックして「新規作成>その他」メニューを選択。Maven/Maven POM fileを選択して、次へで終了まで。
POMファイルにdependencyを追加してみる。pom.xmlを右クリックして「Maven>Add Dependency」を選択し、所望のライブラリを検索する。この時点ではEclipseのビルドパスに依存ライブラリは追加されない。
- プロジェクトを右クリックし、新規>ファイル作成でivysettings.xmlという名前のファイルを作成し、以下のように記述。
<ivysettings> <conf defaultResolver="ibiblio"/> <resolvers> <ibiblio name="ibiblio" /> </resolvers> </ivysettings>
- pom.xmlを右クリックし、Add Ivy Libraryを選択。
- Mainタブでenable project specific settingsにチェックし、ivy settings pathに「project:///ivysettings.xml」と入力
- configurationsの中のcompileとruntimeのみをチェック状態にする。
- pom.xml[compile, runtime]というノードが現れ、そこに依存ライブラリが現れる。
pom.xmlに依存ライブラリを追加・削除などした場合には、pom.xml[compile, runtime]を右クリックし、メニューからResolveを選択することでpom.xmlの変更内容が反映される。
Antを使う
Antを使うには、上記のivy.xml, pom.xmlのいずれの場合でも、そのままでは依存ライブラリをantビルドから扱うことはできない。 それらは、リポジトリの中にあるので、Antビルドファイルからは見えないからだ。 Antで扱うには、それらをいったんローカルなフォルダにコピーしてくる必要がある。これを行うのが、Ant用のタスクorg.apache.ivy.antである。
ivy.xmlの場合
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="hello-ivy" default="resolve"> <target name="resolve"> <ivy:retrieve /> </target> </project>
pom.xmlの場合
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="hello-ivy" default="resolve"> <target name="resolve" description="--> retrieve dependencies with ivy"> <ivy:configure /> <ivy:resolve file="pom.xml" conf="compile" /> <ivy:retrieve/> </target> </project>