GradleプロジェクトをEclipse、IntelliJ IDEA両対応で開発する

## 概要

以前、EclipseでGradleプロジェクトを作成する方法を書きましたが、その更新記事です。

- [EclipseのGradleプロジェクト作成方法比較](http://qiita.com/grachro/items/d1ebad3857a794895426)
- [EclipseのGradleプロジェクト作成方法比較（追補編）](http://qiita.com/grachro/items/16bba860f9d9fe5ee4c5)


今回は、Gradleで作成したJavaプロジェクトをGit管理しつつ、各開発者が、EclipseかIntelliJ IDEA、どちらか任意のIDEで開発できるようにしてみます。

## Gradleでプロジェクト作成

適当なディレクトリに、gradle init --type java-libraryコマンドでプロジェクトを作ります。

```bash:ターミナル
mkdir fooProject
cd fooProject/
gradle init --type java-library
```

### .gitignore

各IDEが生成した設定ファイルをgit管理の対象外とさせるため、.gitignoreに登録します。[Gradleの公式リポジトリ](https://github.com/gradle/gradle)の[.gitignoreファイル](https://github.com/gradle/gradle/blob/master/.gitignore)にその設定が書かれているので、必要な部分を抜き出します。



```text:.gitignore
# Gradle
# ------
.gradle
/build
/buildSrc/build
/subprojects/*/build
/subprojects/docs/src/samples/*/*/build

# IDEA
# ----
.idea
.shelf
/*.iml
/*.ipr
/*.iws
/buildSrc/*.iml
/buildSrc/*.ipr
/buildSrc/*.iws
/buildSrc/out
/out
/subprojects/*/*.iml
/subprojects/*/out

# Eclipse
# -------
*.classpath
*.project
*.settings
/bin
/subprojects/*/bin
atlassian-ide-plugin.xml

# NetBeans（一応）
# --------
.nb-gradle
.nb-gradle-properties
```

### git commit

この状態で、初回のgit commitをします。

```bash:ターミナル
git init
git add --all
git commit -m '初回'
```

## コンソールでgradleを実行

ここのパートは特にこの通りやる必要はありませんが、簡単なプログラムを組んで動く状態を作ってみます。

### build.gradleでライブラリ追加

```build.gradle
apply plugin: 'java'
apply plugin: 'application' //この行追加

repositories {
    jcenter()
}

mainClassName = "foo.App" //この行追加 

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.21'
    compile 'org.apache.commons:commons-lang3:3.4' //この行追加

    testCompile 'junit:junit:4.12'
}
```


mkdir src/main/java/foo


```src/main/java/foo/App.java
package foo;

import org.apache.commons.lang3.StringUtils;

public class App {
    public static void main(String[] args) {
        System.out.println(StringUtils.left("abcdef", 3));
    }
}
```


gradle runでGradleプロジェクトを実行すると、文字列"abc"が出力されます。

```bash:ターミナル
gradle run
:compileJava
:processResources UP-TO-DATE
:classes
:run
abc

BUILD SUCCESSFUL

Total time: 4.145 secs
```

この状態で変更した差分をgitにコミットしてください。

## Eclipseで開く

### Eclipse Neonのインストール

[公式サイト](https://eclipse.org/downloads/)からEclipse Neonのインストーラをダウンロードします。
![スクリーンショット 2016-08-09 10.05.20.png](https://qiita-image-store.s3.amazonaws.com/0/88743/7a53d0a1-e411-e2a2-9cb0-601ce5a8bb5c.png)

起動したらパッケージ選択画面がでるので、Java DevelopersかJava EE Developersを選んでEclipse本体をインストールします。
![スクリーンショット 2016-08-09 10.18.31.png](https://qiita-image-store.s3.amazonaws.com/0/88743/d20ac9c8-82b1-cc76-5bde-dc995e970ee9.png)

### Eclipse へプロジェクトをインポート

Eclipse NeonではGradleプラグイン（Buildship: Eclipse Plug-ins for Gradle）がディフォルトでインストール済みです。メニュー > File > Import...からGardle Projectを選んで、先ほど作成したプロジェクトのパスを指定します。
![スクリーンショット 2016-08-09 11.25.57.png](https://qiita-image-store.s3.amazonaws.com/0/88743/a9fcdec0-6cc1-8507-f1a0-eb4176094dd3.png)

### Eclipse上でライブラリを追加

無事起動したら、Eclipseのエディタ上でライブラリを追加してみます。追加後は、プロジェクトツリーのプロジェクトルートで右クリックして、Gradle > Refresh Gradle Projectを選んでライブラリをダウンロードしてください。
![スクリーンショット 2016-08-09 11.35.49のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/88743/7b3e24b4-51ae-0332-62e0-105b34acec16.png)

追加したライブラリをimportして使用できるようになります。
![スクリーンショット 2016-08-09 11.49.02.png](https://qiita-image-store.s3.amazonaws.com/0/88743/4ea47445-f5d6-85e1-a966-53cd117a3a1d.png)

この状態で変更した差分をgitにコミットしてください。

## IntelliJ IDEA

前準備として、先ほどEclipseで更新したリポジトリを別のディレクトリにcloneしておいてください。

### IntelliJ IDEA のインストール

[JetBrainsのサイト](https://www.jetbrains.com/idea/)から、IntelliJ IDEAをダウンロードします。

### IntelliJへプロジェクトをインポート

IntelliJ IDEAで、Welcom to IntelliJ IDEAダイアログから、Import Projectで先ほどクローンしたGradleプロジェクトを取り込みます。（このダイアログをプロジェクトを全部閉じる以外の方法で表示するやり方を知っていたら教えてください。）
![スクリーンショット 2016-08-09 12.18.13.png](https://qiita-image-store.s3.amazonaws.com/0/88743/05c91012-adc3-c326-7b37-097b1db72950.png)

このダイアログでは、Gradleを選びます。
![スクリーンショット 2016-08-09 12.19.05.png](https://qiita-image-store.s3.amazonaws.com/0/88743/16a4a5e4-e64f-38ff-ced8-a0322f7b7476.png)

プロジェクトが起動すると、dependenciesのライブラリが解決されてコンパイルが通った状態になります。
![スクリーンショット 2016-08-09 12.35.31.png](https://qiita-image-store.s3.amazonaws.com/0/88743/ab73d424-5bfb-b5e8-4254-770314e8fca9.png)

Appクラスで右クリック＞Run 'App.main()'で実行できます。
![スクリーンショット 2016-08-09 12.36.44.png](https://qiita-image-store.s3.amazonaws.com/0/88743/56f6846c-b628-8a17-ec81-bf518a577d0b.png)

### IntelliJ IDEA上でライブラリを追加

IntelliJ IDEA上でbuild.gradleにライブラリを追加する場合は、ファイル変更後にウインドウ右のGradleタグを開いて、「Refresh all Gradle Projects」ボタンをクリックしてください。
![スクリーンショット 2016-08-09 12.44.59.png](https://qiita-image-store.s3.amazonaws.com/0/88743/fb199b83-227f-ec89-55b8-cdd09b26ca10.png)

しばらくするとライブラリがダウンロードされ、ライブラリが使えるようになります。
![スクリーンショット 2016-08-09 12.48.51.png](https://qiita-image-store.s3.amazonaws.com/0/88743/e8feaed1-1309-3bcf-18bd-50aa2a129987.png)


### まとめ

以下の手順でEclipse、IntelliJ IDEAでGradleプロジェクトを共有できます。

1. gradleプロジェクトを作る
2. .gitignoreにでIDEの設定ファイルを指定する  
3. Eclipse か IntelliJ IDEA で、Gradleプロジェクトをimportする


Gradleではプラグインを使うことでIDE用の設定ファイルをgradleに作成させることもできますが、importの方が手軽にIDEに取り込むことができます。



**補足1** 
eclipseプラグインで、Eclipse用設定ファイルを作成する場合

```build.gradle
apply plugin: 'java'
apply plugin: 'eclipse'
```
```bash:ターミナル
gradle eclipse
```


**補足2**
ideaプラグインで、IntelliJ IDEA用設定ファイルを作成する場合

```build.gradle
apply plugin: 'java'
apply plugin: 'idea'
```

```bash:ターミナル
gradle idea
```