Gradle IDE pack(STS Gradle plugin)とbuildshipの比較

Eclipseのgradleプラグインについて。

4.5からは[buildship](http://projects.eclipse.org/projects/tools.buildship)がデフォルトでついていますが、それ以前では[Gradle IDE Pack](https://marketplace.eclipse.org/content/gradle-ide-pack) が主流だったかと思われます。これからのプロジェクトでどちらを採用すべきかの判断材料を整理してみました。

# 結論

ぶっちゃけると現時点ではどちらでも良いかと思います。Gradle IDE Pack(STS Gradle plugin)に慣れたメンバーが多いならそちら、そうでないならbuildshipというところです。

とはいえ、buildshipは本体から推奨されていて機能もほぼ同等のところまできているので、要員確保などの政治的要因がなければ、新規プロジェクトではbuildshipにした方が良さそうです。buildship自体のバージョンも2.0.0になってきたので、もうしばらくすれば安定しそうですし、そのときにはbuildship一択となりそうです。

# [buildship](http://projects.eclipse.org/projects/tools.buildship)

## 開発状況

[公式サイト](https://gradle.org/eclipse/)の冒頭を抜粋ですが、見てのとおり、公式アピールが凄いです。

> Buildship: official Gradle support for Eclipse
> Developed by the creators of Gradle, Buildship is a set of plugins to integrate your Gradle build into Eclipse. Buildship makes Eclipse more powerful by providing a very deep integration of Gradle into the IDE, allowing you to do more right from within the IDE.

## 機能

* gradleプロジェクトの作成(build.gradle,gradlewなどがあればプロジェクトを作れる)
* gradle taskの実行
* task実行時の標準出力を専用コンソールで見られる
* taskの実行順やかかった時間も専用viewで見られる
* gradleでのtest実行
* 依存ライブラリの更新(`refresh gradle project` でダウンロードされる)
* *.gradleのシンタックスハイライトはなし

プロジェクト作成と依存ライブラリの取得ができるなら、開発に必要な最低限レベルには十分達していると思います。gradle taskが実行できるなら、deployに必要なものを作る、テストの実行などもできるので、よほどこみいった状況にならない限りは不足を感じることはないでしょう。

Minimalist Gradle Editorを追加インストールすれば、シンタックスハイライトはつきます。（*.gradleを選んで　`右クリック > open with` で使用するeditorを選べます。）

# [Gradle IDE Pack](https://marketplace.eclipse.org/content/gradle-ide-pack) 

## 開発状況

STS Gradle pluginの部分はsprint-projectsのひとつ、editorやtaskの実行などはnodeeclipseという、node.jsとeclipseの統合をきっかけにしたプロジェクトが担っています。

* https://github.com/spring-projects/eclipse-integration-gradle 
* http://www.nodeclipse.org/

どちらもここ最近のコミットがされているようですし、eclipseとspringの関係も長く良さそうなので、当面は開発が続くと思われます。

しかし、STS Gradle pluginをいれて再起動後の画面に 
> Migration from STS Gradle to Buildship 

![image](https://qiita-image-store.s3.amazonaws.com/0/9880/d358e1ca-77e3-3e9e-5657-be74cd7bc6e3.png)


というメッセージがでます。その中には「STS Gradle pluginは最低限のメンテナンスしかしていないし、将来的には止まるかもしれません」とあります。そのうえで、ご丁寧に[buildshipへの移行手順のページ](https://github.com/eclipse/buildship/wiki/Migration-guide-from-STS-Gradle-to-Buildship)のリンクもつけています。このページは、STS GradleとBuildshipの違い（一方にしかない機能など）をまとめているので、どちらを採用するかのときに参考になります。

## 機能

* gradleプロジェクトの作成
* gradle taskの実行
* 依存ライブラリの更新
* *.gradleのシンタックスハイライトなし
* 依存ライブラリの管理の無効化（依存ライブラリを参照しなくなる）

buildshipの方が、gradle taskを実行しやすく、実行時の状況も見やすいです。機能的にはほぼ同等とみて良さそうです。

# 番外 [IntelliJ IDEA](https://www.jetbrains.com/idea/)

community版でもgradleは使えるので、単純なjavaアプリであれば全然問題ないでしょう。
（Playframeworkを使った開発でも、community版を使いましたが、さほど不自由は感じなかったです。有償版を使えば便利なところはあったかもしれないですが。）

![image](https://qiita-image-store.s3.amazonaws.com/0/9880/ca3732f6-81cd-5d21-9630-800b25d86876.png)

* gradleプロジェクトの作成
* gradle taskの実行
* 依存ライブラリの自動更新(build.gradleを変更したら、自動で更新が走る。手動の切り替えも多分できる)
* *.gradleでインデント対応

と、community版でもeclipseより良いところは結構あるので、作成するアプリやプロジェクトの規模によっては選択肢にいれても問題ないでしょう。


# 参考サイト

* http://qiita.com/grachro/items/d1ebad3857a794895426
* http://qiita.com/grachro/items/16bba860f9d9fe5ee4c5
* http://qiita.com/cypher256/items/9561ed5d5cbc91bb2ec5
* https://github.com/eclipse/buildship/wiki/Migration-guide-from-STS-Gradle-to-Buildship
* http://mtkj.hatenablog.com/entry/2015/09/14/205538