code up

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Apache Ivyを使ってみた感想

Apache Ivyの利用を開始した。現在の私の環境(少人数プロジェクト)では無用の長物となりそうである。

こちらの記事(Apache Ivyの紹介と基本的な使い方)にあるように、大きなプロジェクト(大人数、ライブラリが超複雑に絡んでいる、などのプロジェクト)でこそ利用されるべきで、小さなプロジェクトではオーバースペックであるように思う。

  • 長年Antを使っている組織で、ソースツリーのディレクトリー構造を変えられない場合
  • earファイルの生成など複雑なビルド対象を扱う場合
  • ビルドスクリプト専門の開発、保守担当をアサインできる場合

もともと現在保守しているマイフレームワークで使っているjarの最新版管理のために利用しようと考えたが、Apache系は安定してダウンロードできるもののYahoo! UI Libraryfscontext(JNDI経由のDataSource用のモック)はFAILED DOWNLOADSとエラー出力される。URLでアクセスしても404 Not Foundであった。

その他、数週間前にリリースしているYUI Compressorが2.4.6のままで2.4.7がまだ反映されていない点(所謂yumなどのパッケージ管理システムではこういった遅延は当たり前だけど)や依存関係に不要と思われるjarが含まれてくることが気になった。

必要とする全てのライブラリがダウンロードできないのは残念だ(元々maven用のリポジトリであるためant用のライブラリやユーティリティ系が少ないのは致し方ないことなのだろう)。少人数のプロジェクト(現在担当しているプロジェクトはjarファイルが30ファイル程度)ではこういったツールを利用するよりも、ひとつずつダウンロードした方が多少の手間はかかるが都度Release Noteが確認できるメリットがある。また、少人数でのローカルリポジトリも導入効果が薄いだろう。

とはいえ一部ダウンロードができるところまでは作成したので、Apache Commons系などのJavaソースのビルドに関するjarファイルのダウンロードにもう少し利用してみようと思う。

作成したXMLファイル達。サンプルでドキュメントはあまり確認していないのでもっといい使い方があるのかも知れない点はご了承を。

  1. Eclipseのインストール * Indigo
  2. Apache Ivy(antの依存性管理のツール)のインストール * 今回は2.2.0
  3. ivy-2.2.0.jarをEclipseのPreferences→Ant→Runtime→Global Entriesに追加
  4. build.xml

  5. ivy.xml

  6. build.xmlivy.xmlを同じフォルダ置いておき、Eclipseからbuild.xmlを実行。

おまけ - ivy.retrieve.pattern

需要のない使い方かもしれないが、ダウンロードするライブラリは${basedir}/lib(ivy.lib.dir: デフォルトのダウンロード場所)にconf毎のディレクトリを割り当てている(build.xml<property name="ivy.retrieve.pattern" value="${ivy.lib.dir}/[conf]/[artifact]-[revision](-[classifier]).[ext]" />の部分)。

この場合commons-pool-1.5.6.jar${basedir}/lib/cli/に保存されるようになる。

オンラインのドキュメントは内容が若干古いようで、そこに記載されている通りにivy.retrieve.patternを設定するとソースコードをダウンロードしても*-sources.jarがつかなくなった。

classifierというパラメータがそうなのだがなかなか見つからなかったのだが、結局はドキュメントのセクション『Calling ivy from ant: first steps』の下にさらっと書いてあるリンク先(最新版のsvnにあるpropertiesファイル)にて見つけることができた。

For the latest version of these properties, you can check the svn version.

classifierを指定しておくことでソースコード(*-sources.jar)やJavadoc(*-javadoc.jar)のサフィクスがファイル名に付与される。patternにclassifierがないとバイナリと一緒にソースコードやJavadocをダウンロードした際に次のエラーが出てしまう。要はソースコードもバイナリも同じファイル名だから処理が継続できずエラーとなっている。

build.xml:121: impossible to ivy retrieve: java.lang.RuntimeException: problem during retrieve of org#orglibs: java.lang.RuntimeException: Multiple artifacts of the module org.apache.commons#commons-lang3;3.1 are retrieved to the same file! Update the retrieve pattern to fix this error.

おまけ - ソースコードとJavadocのダウンロード

Ivy 2.2.0でソースコードやJavadocをバイナリと一緒にダウンロードする方法。二通りある。

全てのdependencyでソースコードやJavadocをダウンロード。各dependencyconf属性にはdefaultを書かない。

<dependencies defaultconfmapping="*->default,sources,javadoc">
	<dependency org="commons-dbutils" name="commons-dbutils" rev="latest.integration" conf="web" />
</dependencies>

特定のdependencyでソースコードやJavadocをダウンロード

<dependencies>
	<dependency org="org.apache.commons" name="commons-lang3"
		rev="latest.integration" conf="web->default,sources,javadoc" />
</dependencies>
関連記事
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。