読者です 読者をやめる 読者になる 読者になる

ビルドツールのEclipseプラグインを試してみたよ

Wiiを買ったはいいものの、付属のソフト以外何も買ってなくてあっさり飽きたので新しいソフトを探していたら、「JUST DANCE Wii」というなかなか面白そうなものが見つかったのでさっそくAmazonで予約しつつも、手元に届くまでYouTubeを見ながらヘビーローテーションの振り付けを覚えようとしているikikkoです、こんにちは。


概要

今回は、ビルドツールのEclipseプラグインをそれぞれ試してみました。機能紹介と簡単な感想付きで買いてみます。取り上げたのは、以下の4つ。

  • M2E (Maven)
  • IvyDE (Ivy)
  • Gradle Plugin (Gradle)
  • Gradle STS Support (Gradle)
感想

先に全体の感想を書いておくと、

  • ビルドツールのライブラリ依存性管理機能と、Eclipseのビルドパス設定がスムーズに連携できるか
  • Eclipse内からスムーズに(ターゲット/ゴール/タスク)が実行できるか

Eclipseプラグインの肝になると感じました。

前者がスムーズにできないと、ライブラリの依存を更新して改めてEclipse側のビルドパスを設定する必要があります。扱うライブラリが多く、かつ頻繁に変更がある状態だと、片方だけやって片方は対応し忘れるといった設定漏れが発生します。

後者ができないと、結局ターミナルなどを別途開いて、そちらでビルドツールを起動しないといけなくなります。2つの画面を行ったり来たりしてるとやっぱり集中が途切れますし、画面間で実行ログを参照するなどもちょっとやりにくい。

M2E

f:id:ikikko:20111011010953p:image

開発元
機能
  • pomエディタ
  • pom.xmlと同期した、Eclipseのビルドパスの自動設定
  • Runコマンドの拡張
感想

もともとSonatypeでM2Eclipseとして開発されていたのですが、Eclipse 3.7からM2EとしてEclipseにプロジェクトが移りました。が、移ったあとの方が前よりしょぼくなってる気が。リポジトリやプロファイルの設定など、Advanced Tabsでできてたことが軒並みできなくなってます。最悪、XMLを直接編集すればいいのですが、それだとプラグインを使う意味があまりないですしね。。。

Dependency Hierarchyで、落とされてきたJarがどのアーティファクトに紐付けられているかが分かるので、これは相変わらずいいですね。あとは、追加されたDependencyを自動検知して、Eclipseのビルドパスに反映してくれるやつ。

Maven側でもmaven-eclipse-pluginがあるのですが、こちらだとpom.xmlの更新を自動検知してくれる機能はありません。なので、dependencyなどを修正した場合は再度maven-eclipse-plugin(mvn eclipse:clean eclipse:eclipse)を叩く必要があります。

両方を使った感じ、maven-eclipse-pluginの方が安定してそう。その場合でもPOMエディタとして使えるので、M2Eを入れておいて損はないかと思います。

あと、Jenkinsの開発時(や、↓の例だとSpring Dataのチュートリアル時でも)にエラーが出ることがあります。あまり細かくは追っていませんが、M2Eでのmaven lifecycleの扱いが以前と変わっているみたいです。下記リンクを参考に。

IvyDE

http://ant.apache.org/ivy/ivyde/history/latest-milestone/images/completion4.jpg

開発元
機能
  • ivy.xmlの補完
  • ivy.xml修正のタイミングで、自動resolve & ビルドパス反映
  • retrieve対応(プロジェクト直下にJar配備)
  • Eclipseのプロジェクト参照(未検証)
  • Reverse Dependency Explorer(依存性のビュー表示)
感想

ivy.xmlに同期した自動resolve&ビルドパス反映はいい感じ。漏れがなくなるし、ivy.xmlの修正時の確認が楽。これだけのためにいれといてもいいかな。

Dependency Explorerは推移依存までは見れないみたい。推移依存まで見れたら、どのartifactがどのmoduleと紐付いているのかが分かりやすくなるのですが。この点はM2Eの方が優れてますね。

Gradle Plugin

f:id:ikikko:20111011013747p:image

機能
  • Runコマンドからタスク実行
感想

使い方を記したサイトなどは見つかりませんでした。多分、YouTubeにあがってるスクリーンキャストぐらい。

作者自身「まだexperimentalだよ」と言っているのもあって、色々機能不足だし不安定。この記事書いてるときも、さっきまでできてたことがNPEが発生してできなくなったりするし。ま、experimentalにあまり過度の期待を抱いても・・・ですね。開発も2010年3月から止まってるし。

Gradle STS Support

http://static.springsource.org/sts/docs/2.7.0.M1/reference/html/gradle/img/run-as-menu.png

開発元
機能
  • マルチプロジェクトのサポート
  • インポートウィザード
  • プロジェクトの依存性管理とEclipseビルドパスへの反映
  • Runコマンドからタスク実行
感想

上のGradle Pluginよりは将来性がありそう。SpringSourceが開発しているということもありますし。ただ、STSと切り離してインストールできるようになると嬉しいな。今はSTSの上でしか動きません、多分*1

機能的には、マルチプロジェクトをちゃんと動的に読み込んでくれるなど、なかなかの高機能。そのかわり、build.gradleの補完などはないので、別途入れたgroovy eclipse pluginの方に任せる感じかな。build.gradleをGroovyファイルとして読み込めば、Gradle独特の機能は無理にしろ、Groovyとしての補完は有効になるので。

ちなみに、チュートリアルではSpring Integrationのプロジェクトを使っていますが、サイト内に記載されているリポジトリパスが違っていますので注意を。

git clone --recursive git://git.springsource.org/spring-integration/spring-integration.git

ではなくて、正しくは

git clone --recursive git://github.com/SpringSource/spring-integration.git

です。

*1:一応、素のEclipseの上にGradle Tooling APIだけインストールしてみたけど、案の定動きませんでした