IntelliJ+Gradleのプロジェクト作成方法メモ

IntelliJでGradleプロジェクトが作れるっぽいので、少し試してみた。
Gradleの使い方もだいぶ忘れてしまったので、そっちの使い方も思い出しながら。

# 環境
* JDK 1.8.0u45
* IntelliJ IDEA CE 14.2
* Gradle 2.2(IntelliJからGradle Wrapperを利用)

# プロジェクト作成
1. プロジェクト作成画面の左側ペインから"Gradle"を選択する
2. 次の通りに設定して、"Next"
    * `Use auto-import`にチェックを入れる(お好みで)
        * 自動同期してくれるので便利だが、プロジェクトが肥大化してくると遅くなることがある
    * `Create directories for empty content roots automatically`にチェックを入れる
        * 自動で必要なディレクトリ作ってくれるので便利
        * デフォルトのディレクトリはMavenの標準構成と同じ
    * GradleはデフォルトのGradleラッパーを使う(`Use default gralde wrapper`)

        ![idea_create_project](https://qiita-image-store.s3.amazonaws.com/0/29291/cb82a2f6-02c9-c5ee-b7c9-a5d7cae4348e.png)
3. プロジェクト名を適当につけて"Finish"

# ビルドしてみる
1. `src/main/java`に適当にMainクラスを作る

    ```HelloWorld.java
    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello, World!");
        }
    }
    ```
2. `Run`→`Edit Configurations...`から、`Gradle`のビルド設定を作成
    * `Gradle project`は作成したプロジェクトを指定
    * `Tasks`は`build`と入力

        ![gradle_build_setting](https://qiita-image-store.s3.amazonaws.com/0/29291/2465d1cc-8103-01e8-1d30-aa9623ece3a5.png)

3. ビルド設定作成後、実行ボタン(Shift+F10)で実行
    * `BUILD SUCCESSFUL`と表示されればビルド成功

    ```
    :compileJava
    :processResources UP-TO-DATE
    :classes
    :jar
    :assemble
    :compileTestJava UP-TO-DATE
    :processTestResources UP-TO-DATE
    :testClasses UP-TO-DATE
    :test UP-TO-DATE
    :check UP-TO-DATE
    :build

    BUILD SUCCESSFUL

    Total time: 0.461 secs
    ```

# Mainクラスを実行してみる
* Gradleからアプリケーションを実行する場合、アプリケーションプラグインを使う必要がある

1. `build.gradle`を開き、次の通り追記

    ```build.gradle
    // アプリケーションプラグインを利用
    apply plugin: 'application'
    
    // Mainクラスを指定(パッケージ名込み(FQCN))
    mainClassName = 'HelloWorld'
    ```
    * アプリケーションプラグインはJavaプラグインを利用するため、`apply plugin: 'java'`は消してしまってもOK
2. `Gradle`のビルド設定を開き、`Tasks`を`run`に変更
    ![gradle_run_setting](https://qiita-image-store.s3.amazonaws.com/0/29291/ef297296-1b1a-e940-2047-51ef25498fc7.png)
3. 実行ボタン(Shift+F10)で実行すると、Mainクラスが実行される

    ```
    :compileJava
    :processResources UP-TO-DATE
    :classes
    :run
    Hello, World!
    
    BUILD SUCCESSFUL
    
    Total time: 0.347 secs
    ```

# ライブラリを使ってみる
* やっぱりサードパーティーのライブラリを使ってみないと！ということでとりあえずApache Commonsライブラリを使ってみる

1. `build.gradle`に依存ライブラリ設定を追記

    ```build.gradle
    dependencies {
        compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.4'
    }
    ```
    * Apache CommonsライブラリはMavenセントラルリポジトリにあるのでこれだけでOK

2. ライブラリを使ったコードを書いて実行
    * コード

    ```HelloWorld.java
    import org.apache.commons.lang3.StringUtils;
    import java.util.Arrays;
    
    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello, World!");
    
            String[] result = StringUtils.split("hoge,piyo,foo,bar", ",");
            System.out.println(Arrays.toString(result));
        }
    }
    ```
    * 実行結果

    ```
    :compileJava
    :processResources UP-TO-DATE
    :classes
    :run
    Hello, World!
    [hoge, piyo, foo, bar]
    
    BUILD SUCCESSFUL
    
    Total time: 0.338 secs
    ```

# 結論
やっぱりGradle便利。

# 参考
[Java - Gradle使い方メモ - Qiita](http://qiita.com/opengl-8080/items/4c1aa85b4737bd362d9e)