Spring Boot + Intellij Ideaの環境セットアップ（備忘録）

# はじめに

Spring BootでRESTful APIを作ることになりそうなので、開発環境などのセットアップ手順を確認してみました。
最初は[STS](https://spring.io/tools/sts)を利用しようかと思いましたが、springのガイドに目を通していたら[IntelliJ IDEA](https://www.jetbrains.com/idea/)の手順も紹介されていたので方針変更しました。（Android Studioを利用する機会もあるので、脱Eclipseでいこうかと）

* maxOS Sierra(10.12.6)
* IntelliJ IDEA Community 2017.2.6

# 事前準備

JDK（Java SE Development Kit 8u152）のインストールを行いました。

```
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    1.8.0_152, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home
    1.8.0_131, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
```

その上でIntelliJ IDEAを起動して、SDKの指定を行います。
Welcome画面で`Configure > Project Defaults > Project Structure`を選択し、

<img width="700" src="https://qiita-image-store.s3.amazonaws.com/0/165162/6e2a5b46-ab8b-bd72-8b36-7632840f0764.jpeg">

Project SDKを指定します。

<img width="900" src="https://qiita-image-store.s3.amazonaws.com/0/165162/b680b522-04ab-7c0f-0d28-6b854d0d6e20.jpeg">

なお、Gradle自体はインストールしないでも以下手順は実行可能です。

# ガイドに従って手順確認

以下を参考にしました。
サンプルが提供されていますので、それを動かすところまでを確認します。

https://spring.io/guides/gs/rest-service/

## サンプルをclone

```
$ git clone https://github.com/spring-guides/gs-rest-service.git
```

`complete`配下に実行可能なプログラムコード（`src`配下）が用意されているので、こちらを利用します。
（コード作成の手順も踏むなら`initial`配下を利用します。）

```
$ cd complete
$ ls -1a
./
../
.mvn/
build.gradle
gradle/
gradlew*
gradlew.bat
manifest.yml
mvnw*
mvnw.cmd*
pom.xml
src/
```

## IntelliJ IDEAでインポート

以下を参考にしてインポートを行います。

https://spring.io/guides/gs/intellij-idea/

Welcome画面で`Import Project`を選択します。
そして、`complete`配下のbuild.gradleを選択すると、以下のような画面に遷移します。

<img width="900" src="https://qiita-image-store.s3.amazonaws.com/0/165162/8a56236b-b08b-f614-b35f-a1bf27918572.jpeg">

そのままの状態でOKボタンを押せばインポート完了です。
`.idea`ディレクトリが作成されています。

```
$ ls -1a
./
../
.mvn/
.idea/
build.gradle
gradle/
gradlew*
gradlew.bat
manifest.yml
mvnw*
mvnw.cmd*
pom.xml
src/
```

## サンプル起動

前述の通り実行可能なプログラムコードが含まれていますので、これを実行してみます。
Applicationクラスを選択して実行（⌃+⌥+R）します。

<img width="900" src="https://qiita-image-store.s3.amazonaws.com/0/165162/ced98c0b-02b5-4351-2bd5-ed11985b542b.jpeg">

Tomcatが起動したら、

http://localhost:8080/greeting

に接続して、

```
{"id":1,"content":"Hello, World!"}
```

が返されたら目標達成です。

# 新規プロジェクト作成

せっかくなので、新規にプロジェクトを作成していく手順も確認してみました。

Gradleを選択して、

<img width="800" src="https://qiita-image-store.s3.amazonaws.com/0/165162/f04ca604-d488-d218-c7fd-35db0e330a82.jpeg">

ArtifactIdは任意、

<img width="800" src="https://qiita-image-store.s3.amazonaws.com/0/165162/13a84a82-36d1-e493-b98f-099a6b7c6454.jpeg">

ここのステップはデフォルトのまま変更しないでプロジェクト作成します。

<img width="800" src="https://qiita-image-store.s3.amazonaws.com/0/165162/261868ae-38b8-e016-ded7-78aebb4c0a0b.jpeg">

`build.gradle`を以下のように書き換えて、
※[こちら](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started-gradle-installation
)から引用

```groovy:build.gradle
plugins {
    id 'org.springframework.boot' version '1.5.9.RELEASE'
    id 'java'
}


jar {
    baseName = 'rest-sample'
    version =  '0.0.1-SNAPSHOT'
}

repositories {
    jcenter()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}
```

プログラムコードは、前述のサンプルからコピーしました。
後はサンプルを同様の手順で起動すればOKです。

なお、`gradle-wrapper.properties`を確認したところ、

```:gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-rc-2-bin.zip
```

となっていました。
最新版というわけではないようです。
Current Release (v4.3.1)に更新してみます。

以下のように書き換えて、

```:gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3.1-bin.zip
```

以下のコマンドを実行すれば、

```
$ ./gradlew wrapper
```

Gradleのバージョンを置き換えられます。

```
$ ./gradlew -v

------------------------------------------------------------
Gradle 4.3.1
------------------------------------------------------------
```