Javaの開発環境構築 (Mac + Pleiades All in One Eclipse 4.7 + Spring Boot + Gradle (Buildship))

#はじめに
　MacにJavaの開発環境を構築したので、手順を以下に纏めます。
　"Hello World"を出力するまでを記載します。
　※ マシンのOSのバージョンは、macOS High Sierra 10.13.4です。

#前提条件
　Pleiades All in One Eclipse では、自動デフォルト設定機能により、
　既存のJDK環境に依存することなく、コンパイラなどのパスが自動でセットされます。
　よって、JDKは不要ですが、古いバージョンのJDKが気になる方は、
　参考情報（JDKのアンインストール方法）の手順で事前に削除して下さい。

#1. Eclipse
##1-1. ダウンロード
　Pleiades All in One Eclipse を以下のサイトからダウンロードします。
　http://mergedoc.osdn.jp/

　(1) Eclipse 4.7 Oxygenを選択します。
　　<img width="454" alt="スクリーンショット 01.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/f85dd672-3190-c221-9253-a4c25a61a9f3.png">

　(2) Mac 64bit(Full Edition)とJavaを選択します。
　　<img width="369" alt="スクリーンショット 02.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/45321ef4-1764-3e8d-c8de-90a4ef44aea0.png">

##1-2. インストール
　(1) pleiades-4.7.2-java-mac-jre_20171225.dmgを実行します。
　(2) Applicationsにドラッグ＆ドロップします。
　　<img width="340" alt="スクリーンショット 03.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/4835cccc-f7de-ab9d-3a5f-eb1948feae6e.png">

##1-3. 起動
　初回起動時に「開発元が未確認のため開けません」と警告が表示される場合があります。
　　<img width="397" alt="スクリーンショット 04.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/81d515c3-d843-74d4-2d65-86cd7868ff42.png">

　その場合、右クリックで開くと以下のようなダイアログが表示されるため、
　「開く」をクリックしてください。
　２回目以降、この警告は表示されません。
　　<img width="397" alt="スクリーンショット 05.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/d41ad1a3-effa-6ad0-00cd-a7501cfe972a.png">

　ワークスペースは任意のディレクトリを選択して下さい。

#2. Spring Tool Suite（STS）
　EclipseでSpring開発するためのプラグインをインストールします。
　Spring-Bootもこれで開発します。

　(1) メニューのヘルプ → Eclipseマーケットプレースを選択します。
　　<img width="567" alt="スクリーンショット 07.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/8138d99d-6fd2-050b-6614-1ad8c7261083.png">

　(2) 「STS」で検索を行い、インストールを実施します。
　　<img width="369" alt="スクリーンショット 08.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/74f27507-9a9d-a5a6-654e-10b3d3e9475c.png">

　(3) 選択されたフィーチャーの確認画面では、そのまま確認ボタンを押下します。
　(4) ライセンスのレビュー画面では、「使用条件の条項に同意します」を選択し、完了ボタンを押下します。
　　※ インストール中に「インストールする項目の収集中にエラーが発生しました」が発生した場合
　　　<img width="567" alt="81.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/b41c1bf1-d142-d2ae-5617-55ee4c5e613c.png">

　　　ローカルにキャッシュしているサーバの情報が古いことが原因で発生しています。
　　　参考情報（サーバの情報を更新）の手順でサーバの情報を更新して下さい。
　　　更新後、再度インストールを行えばエラーなくインストールできます。

　(5) パッケージ・エクスプローラ上で右クリック → 新規 → その他で
　　SpringとSpring Bootが追加されていることが確認できます。
　　　<img width="567" alt="スクリーンショット 11.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/012ac440-6cc8-877c-ecca-ee7dfdf4a590.png">

#3. プロジェクトの作成
　Spring スターター・プロジェクトで作成します。
　※ ファイル → 新規 → Gradle プロジェクトから作成する方法もありますが、
　　SpringBootの依存関係などを手動でbuild.gradleに記述する必要があります。

　(1) プロジェクトの作成
　　ファイル → 新規 → その他 → Spring スターター・プロジェクトを選択
　(2) 型で『Gradle (Buildship 2.x)』を選択する以外は、デフォルトのまま「次へ」進みます。
　　![スクリーンショット 31.png](https://qiita-image-store.s3.amazonaws.com/0/165180/f4df2426-6ddb-ee95-72df-09f2a77df079.png)

　(3) 『Web』を選択し、「次へ」進みます。
　　![32.png](https://qiita-image-store.s3.amazonaws.com/0/165180/17f38bc4-35f1-f3d4-9117-1d7d26fd2159.png)

　(4) 最後に、確認画面が表示されるので、「完了」ボタンをクリックします。

#4. プロジェクトの確認
　(1) プロジェクトの実行
　　プロジェクトを 右クリック → 実行 → Spring Boot アプリケーション を選択します。
　(2) コンソールの確認
　　コンソールに以下のようなログが出力されていれば成功です。
　　<img width="567" alt="34.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/161e58ba-87d5-ab92-460f-b36d9658692a.png">

　(3) デフォルトのページ確認
　　localhost:8080にアクセスします。
　　<img width="454" alt="スクリーンショット 2018-04-19 21.58.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/e858dc6b-645b-6232-44fc-904f4b5cf1a6.png">

　デフォルトのWebページを用意していない為、エラーとなります。

#5. Webページの作成
　(1) クラスの作成
　　ファイル → 新規 → クラスを選択
　(2) ここでは『 HelloController』という名前で作成します。
　　名前以外はデフォルトのままです。
　　　![33.png](https://qiita-image-store.s3.amazonaws.com/0/165180/e7282f75-48c9-9698-0354-d5efa8c0e4c2.png)

　　以下のプログラムが出来上がります。

```java:HelloController.java
package com.example.demo;

public class HelloController {

}
```

　(3) "Hello World"を出力するように変更します。

```java:HelloController.java
package com.example.demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @RequestMapping("/")
    public String index() {
        return "Hello World";
    }
}
```

　(4) プロジェクトを再実行し、localhost:8080にアクセスします。
　　<img width="454" alt="スクリーンショット 2018-04-19 22.11.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/68436e90-aae6-fe33-7d9e-7bfe1e21aa3c.png">

　　※ ここで8080ポートが既に利用されていることで、エラーが表示される場合は、
　　　src/main/resources/application.propertiesを開き、
　　　その他のポート番号を以下のように指定して下さい。

```properties:application.properties
server.port=8081
```

　　プロジェクトを再実行し、localhost:8081にアクセスすることで、
　　Hello Worldが表示されます。

#参考情報（JDKのアンインストール方法）
　(1) 既存環境の確認
　　次のコマンドを実行します。
　　$ /usr/libexec/java_home -V

　　　Matching Java Virtual Machines (2):
　　　    1.8.0_151, x86_64:    "Java SE 8"    /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
　　　    1.7.0_65, x86_64:    "Java SE 7"    /Library/Java/JavaVirtualMachines/jdk1.7.0_65.jdk/Contents/Home
　　　
　　　/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

　　上記の例では、2つのJDKがインストールされています。

　(2) JDKのアンインストール
　　アンインストールは、rm コマンドを実行します。
　　削除するパスは、確認コマンドで出力された「/Library/Java〜」の部分を指定します。
　　また、管理者権限でないと消せないので sudo を頭につけます。
　　（パスワードが要求されますので、管理者のパスワードを入力して下さい）

　　上記での例を以下に示します。
　　　$ sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
　　　Password:
　　　$ sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.7.0_65.jdk/Contents/Home

　(3) アンインストール後の環境確認
　　(1)と同様、次のコマンドを実行します。
　　$ /usr/libexec/java_home -V

　　　Unable to find any JVMs matching version "(null)".
　　　Matching Java Virtual Machines (0):

　　　Default Java Virtual Machines (0):

　　　No Java runtime present, try --request to install.

#参考情報（サーバの情報を更新）
　(1) メニューのEclipse → 環境設定を選択します。
　(2) 左パネルから、インストール/更新の使用可能なソフトウェア・サイトを選択します。
　　<img width="567" alt="82.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/d32a7e3a-0486-5317-0a07-65f8c50051e6.png">

　(3) エラーが発生したロケーションを選択し、再ロードボタンを押下します。
　　この例では、「SpringSource Update Site for Eclipse 4.7」がエラーの原因となったロケーションです。
　　　<img width="567" alt="83.png" src="https://qiita-image-store.s3.amazonaws.com/0/165180/7bcc0ddb-4079-b858-2b14-c2ac615f433a.png">

#参考情報（Springのプロジェクト）
　Springのプロジェクトには2種類あります。
　　(1) Spring レガシー・プロジェクト
　　　SpringFrameworkを利用するプログラム全般で利用します。
　　　SpringBootの機能を使わないのであれば、こちらを選択します。
　　(2) Spring スターター・プロジェクト
　　　SpringBootの機能を使ったアプリケーションを作成する場合に利用します。

#参考情報（Gradle プラグイン）
　EclipseのGradleプラグインには以下の種類があります。
　・Gradle IDE
　　Nodeclipseが配布しているプラグイン
　　Eclipse Marketplaceからインストールします。
　・STS
　・Buildship
　　eclipse.org から公式の Gradle プラグイン Buildship がリリースされました。
　　Pleiades All in One にも追加済み。

　2つインストールしてるとSpringプロジェクトを作る際に、選択することができます。
　・Gradle (STS)
　・Gradle (Buildship)

#参考元
　https://qiita.com/cypher256/items/233795f4fc58a704ee47