home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Groovy/Gradle/Eclipseとの連携

Groovy/Gradle/Eclipseとの連携

Groovy / Gradle / Eclipseとの連携
id: 1182 所有者: msakamoto-sf    作成日: 2013-04-06 22:46:55
カテゴリ: Eclipse Groovy 

EclipseでGradleプロジェクトを扱うには、Mavenと同様2種類の方法が存在します。

  1. Gradleのeclipseプラグインにより、Eclipseプロジェクトとして必要なファイルを自動生成してEclipseからインポートする。
  2. EclipseにGradle連携用のプラグインをインストールし、Eclipse上から直接Gradleをインポートする。

2013-04-06時点での検証環境:

Win7 SP1 64bit
JDK7 64bit
Gradle 1.5
eclipse-jee-juno-SR2-win32-x86_64
Gradle Integration for Eclipse (Gradle IDE, 3.1.0.201210040512-RELEASE9

Gradleのeclipseプラグインを使ったEclipseプロジェクト化

Gradle付属のEclipseプラグインを使うことで、"eclipse"タスクを実行してEclipseプロジェクトに必要な".classpath"や".project"や".settings/"を自動生成してくれます。

build.gradle:

apply plugin: 'eclipse'


$ gradle cleanEclipse eclipse

一応Eclipse WTPプロジェクトの形式にも対応してるっぽいですが試してないので不明。
また、Groovyプロジェクトとして生成されるようですので、インポートするEclipse側ではGGTSをインストールしておく必要がありそうです。
あくまでもEclipse側のJava/Groovy開発機能でプログラミング出来る迄しか調整してくれませんので、Gradleのタスクを実行する場合はEclipseの外で行うか、以下の様な設定でGroovy Script or Java ApplicationのRun/Debug設定を作成する事になりそうです。

  • "Main Class" を "org.gradle.launcher.GradleMain" にする。
  • "Program arguments" に Gradleタスク名を設定する。
  • "VM arguments" に "-Dorg.gradle.appname=${project_name}" を設定する。
  • "Classpath" の "User Entries" に "$GRALDE_HOME/lib/gradle-launcher-1.x.jar" を追加する。

→一応、上記設定で試したところGradleの起動自体は成功しました。"tomcatRun"タスクもデバッグ実行で立ち上がりました(Groovyソースに設定したブレークポイントは何故か有効にならず。Java ApplicationとしてもGroovy Scriptとしても同様)。

さらに依存関係も"gradle eclipse"タスク実行時点のもののみが".classpath"に登録され、GradleがDLしてきたjarファイルのフルパスで生成されます。そのため、生成された".classpath"をそのまま他人の環境に持って行ってもclasspathを解決出来ませんし、新たに依存関係を追加した場合はもう一度"gradle eclipse"で生成し直す必要があります。ただし、その辺はある程度調整できるようです。
参考:

Eclipse用のGradle連携プラグインを使ったインポートやGradleタスクの実行

SpringSourceがEclipse用のGradle連携プラグインを開発しています。Eclipse Marketplaceからもインストール出来ます。

Wiki上にドキュメントもスクリーンショット付きで用意されてますし、何も見なくともGradleプロジェクトの新規作成や、Gradleプロジェクトのインポートなどある程度操作出来ると思います。
本記事を書いている時点では 3.1.0.201210040512-RELEASE を使いました。

利点としてはGraldeのタスク実行がEclipse上から Run で実行出来る点でしょうか。また、build.gradleに apply plugin: 'eclipse' が無くとも自動的にEclipseプロジェクト化を行ってくれる点も便利です。
とはいえ、まだ進化中らしく、Maven連携のm2eプラグインと比較してみると若干気になる動作もありました。

  • m2eではmavenビルドをRun/Debugの両方から実行できるため、maven側でTomcatを起動してWebアプリをEclipse上でデバッグ実行というテクニックが使えたのですが、現時点ではGradleタスクをデバッグ実行する機能はなく、"Run"しか出来ないようです。
  • m2eですとGitHubやSVN上のプレーンなmavenプロジェクトを、チェックアウトと同時にEclipseプロジェクト化出来ましたが、Gradleプラグインではチーム開発機能との連携は薄いらしく、チェックアウトと同時のEclipseプロジェクト化は出来ませんでした。まずチェックアウトしておき、その後GradleプロジェクトとしてインポートしてEclipseプロジェクト化します。一旦プロジェクトをEclipseから除去して、その後GitHubやSVNプロジェクトとしてもう一度インポートし直します。これでようやく、チーム開発機能が有効化された状態のGralde-Eclipseプロジェクトとしてインポート出来ます。

また、一旦実行したGradleタスクをEclipse側から強制的に停止する方法がわかりませんでした。試しにEclipse上で"tomcatRun"タスクを実行してみたら、ずっとタスクが実行中の状態になり、Debug Perspectiveのプロセス一覧に表示されるものの、停止などいつもなら使えるはずのアイコンがグレーアウトされ、止めることが出来ませんでした・・・。

参考:

2013-04-09時点の感想

  • お手軽さでは "eclipse-integration-gradle" の圧勝。
    • ただしGradleタスクがDebug実行出来ないのはプロジェクトによってはイマイチに見えるかも。とはいえ、Eclipse WTP側に合わせると割り切れば平気そう。
  • 細かい調整が可能になりそうなのは、むしろGradleのeclipseプラグインによるEclipseプロジェクト化の方かも。
    • 生成するXML側で色々カスタマイズ効きそうなので、頑張れば色々環境依存性を低減できるっぽい。Run/Debug Configurationを同時に生成とか出来たらもっと運用が楽になるかも。

個人で使うならどちらでもそれなりに利用できるレベルにあると感じます。ただし、複数人のチーム開発で開発環境を揃え、日常的なコンパイル・デバッグ実行の流れを作るにはそれぞれの長所・短所についての割り切りや、色々とノウハウが必要になりそうな感じを受けました。とはいえそれは時間の問題という気もしますので、引き続きこの話題についてはwatchしていきます。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-04-06 22:48:36
md5:b1a9e470762a8e4646b98da75ff471e7
sha1:54d3d4301c5d2a20eb2a39e99813680cea02abbf
コメント
コメントを投稿するにはログインして下さい。