LINEBOTのJavaサンプルプログラム（line-bot-sdk-java）をEclipseで編集する

##背景
LINE BOT を作成しようと思い立ち、まずは練習のため、[LINE公式が用意しているLINE BOTのJavaサンプルコード](https://github.com/line/line-bot-sdk-java)(line-bot-sdk-java/sample-spring-boot-kitchensink)に少し手を加えて、herokuにデプロイしようと試みました。
手を加える際にEclipseを使用したのですが、Eclipseにプロジェクト（line-bot-sdk-java）を認識させるのに大変苦労したので、その際に発生した問題と解決方法を以下に記録しておきます。

##環境
- Windows 10
- Eclipse 4.8.0 → Eclipse 4.15.0　※
- Java 10
- Git
- heroku, heroku CLI

※後述の理由でEclipse4.8.0は使用できなかったので、Eclipse4.15.0に変更

##問題１　プロジェクトをEclipseが認識しない
GithubからcloneしたプロジェクトをEclipseにインポートすることを試みました。

プロジェクト・エクスプローラーで右クリック→インポート→インポート→既存のGradleプロジェクトを選択し「次へ」→プロジェクト･ルート･ディレクトリーにline-bot-sdk-javaを選択し「完了」
<b>※インポートする際は【Javaプロジェクト】ではなく【Gradleプロジェクト】を選択する必要があります。こちらを間違えるとうまくいきません。</b>

そうすると、親プロジェクトである【line-bot-sdk-java】は認識されているものの、【sample-spring-boot-kitchensink】などのサブプロジェクト配下のソースがプロジェクト・エクスプローラーから消えてしまいました。

<b>解決策：build.gradleの修正</b>
調べてみると、line-bot-sdk-javaのプロジェクトの構成は<b>マルチプロジェクト</b>（親プロジェクトの下に、サブプロジェクトが存在する構成）だと分かりました。
（参考）[Gradleでマルチプロジェクト](https://qiita.com/shiena/items/371fe817c8fb6be2bb1e)

それを踏まえて調べると、[こちらの記事](https://qiita.com/kazuma1989/items/83dc10c8ee1313592e4a#app%E3%81%A8common%E3%82%92eclipse%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AB%E3%81%99%E3%82%8B)がヒット。以下のように、build.gradleへeclipseプラグインの記述を1行追加することで、無事、Eclipseが全てのサブプロジェクトを認識するようになりました。

```build.gradle
subprojects {
    apply plugin: 'com.github.spotbugs'
    apply plugin: 'java-library'
    apply plugin: 'checkstyle'
    apply plugin: 'io.franzbecker.gradle-lombok'
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'eclipse' //この1行を追加する
```
<b>(4/12 追記)
Spring Bootプラグインを導入した状態でインポートすると、わざわざbuild.gradleにeclipseプラグインの記述を追加しなくても、普通にインポートするだけで無事サブプロジェクトが認識されることが判明しました。そもそもSpring Bootプラグインを導入せずに進めてしまったことが根本原因かもしれません？</b>



##問題２　認識したプロジェクトにエラーが発生する
プロジェクトをEclipseに認識させることには成功したものの、なぜかエラーが多発する上に、プロジェクトを実行しようとしても【Spring Boot アプリケーションで実行】が見つかりません。
![error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566051/1988a1fe-bc69-6e04-1ab7-86290e56ab25.png)
<b>herokuにデプロイしたときは正しく実行される</b>ので、コードの問題ではなく環境の問題であると考えました。

<b>解決策１：Spring bootプラグインのインストール</b>
そもそもSpring Boot アプリケーションなのに、EclipseにSpring Boot プラグインを導入していませんでした。

[Spring Tool Suite（STS）のインストール手順 | 分かりやすく図解で説明](https://medium-company.com/sts%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e6%89%8b%e9%a0%86/)
[「第４章」Spring Tool Suite(STS)プラグインのインストール](https://qiita.com/Siro/items/4efea6e9ce6bf2961b36)

以上のサイトを参考にSpring Boot プラグインを導入しようとしたのですが、<b>eclipse マーケットプレイスで検索しても一向にプラグインがヒットしません。</b>調べてみると、<b>Eclipseのバージョンが4.8.0では該当のプラグインが導入できない</b>ことがわかりました。<b>Eclipse 4.15.0をインストール</b>したことにより、無事Spring Boot プラグインを導入できました。


これで【Spring Boot アプリケーションで実行】が出てくるようになりましたが、相変わらずエラーは消えず、【Spring Boot アプリケーションで実行】を押してもビルドに失敗してしまい実行できません。

<b>解決策２：Lombokプラグインのインストール</b>
（この解決方法を見つけるのが大変だった、、、）

エラーが出ている箇所は、【getterが定義されていない】のような、特定のメソッドが定義されていないといったエラーが大半でした。調べてみると、コンパイル時にgetter,setter,ToStringなどのメソッドを自動生成するlombokというものがあるらしい。

(参考)　[Lombok 使い方メモ](https://qiita.com/opengl-8080/items/671ffd4bf84fe5e32557)

これが怪しいと思い、以下の記事に記載されている手順でLombokプラグインをインストールすると、<b>エラーが消えました。</b>

(インストール手順)　[Lombok　①導入編](https://qiita.com/bakira/items/03a7634027e1e98c8c6e#%EF%BC%92-eclipse%E3%81%ABlombok%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E8%BF%BD%E5%8A%A0)

なお、Lombokプラグインのバージョンが最新の1.18.12を導入すると若干エラーが残ったので、<b>build.gradleに記載してあるバージョン1.18.10で入れ直す</b>と、若干残っていたエラーも消えました。

##【備考】.gitignoreの記載</ins>
【Eclipseにプロジェクトを認識させる】こととは直接関係ありませんが、以下を.gitignoreに記載しておかないと、herokuやgithubにデプロイする際に、Eclipse固有のファイルなどがデプロイ対象に含まれてしまいます。
それを避けるため、以下を記載しました。

```
/.gradle/
/.gitignore

/.classpath
/.project
/.settings
/bin
/build

/*/.classpath
/*/.project
/*/.settings
/*/bin
/*/build
```
##関連記事
前回の記事はこちら
[LINEBOTのJavaサンプルプログラム（line-bot-sdk-java）のデプロイにて発生したトラブル](https://qiita.com/shima-218/items/7e4df25e2c2b3a626509)