Spring Tool Suite 4 インストール、Spring Initializr 、gradlew の利用

# はじめに

記載情報は CI/CD に関連します。  
実務上関わった環境・機能を身近な情報としてお届けしたく、投稿をはじめました。  
各学習上、お金のかからない方法を選択していきます。

以下の手順を実施することで、Spring Tool Suite 4 をインストールを行い、Spring Initializr でプロジェクトのテンプレートを入手の上、gradlew 利用の準備を行います。

## 対象者と関連環境・機能

この記事は下記のような人を対象にしています。

- CI/CD 初学者
- プログラミング初学者
- 駆け出しエンジニア

記載している環境・機能は以下です。

- Java
- Spring Boot
- Spring Web
- Spring Tool Suite 4
- Spring Initializr
- gradlew

## Spring Tool Suite 4(STS)のインストール

後に続く関連記事で Spring Boot Web アプリを作り、CI/CD 環境に乗せていくため、アプリ作成に便利な IDE のインストールを事前作業として記載します。  
インストール手順として以下記事を引用させて頂きます。（基本的な操作は Eclipse と類似する形です。）

[Spring Tool Suite 4(STS)のインストール手順](https://qiita.com/t-shin0hara/items/d60116ab299a4dc8a9d0)

- 後続関連記事でも Java 11 を利用しているため引用手順と一致しています。
- 後続関連記事では日本語化はしておりませんため飛ばしてしまっても OK です。
- 後続関連記事ではエディタフォントも変更しておりませんため飛ばしてしまっても OK です。
- 後続関連記事では Lombok(ロンボック)利用もないため飛ばしてしまっても OK です。

## Spring Initializr でプロジェクトのテンプレートを入手する

### 作業内容

[Spring Initializr](https://start.spring.io/) ではブラウザ上でビルドツールや開発言語を選択して、雛形となるアプリケーションに生成することが出来ます。  
後続関連記事では以下の環境を利用します。  
GENERATE ボタンを押すことで、zip 形式のプロジェクトテンプレートを入手することができます。

|  No | カテゴリ         | 内容           |
| --: | ---------------- | -------------- |
|   1 | Project          | Project Gradle |
|   2 | Langage          | Java           |
|   3 | Spring Boot      | 2.6.7          |
|   4 | Project Metadata | default        |
|   5 | Packaging        | Jar            |
|   6 | Java             | 11             |
|   7 | Dependencies     | Spring Web     |

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2738816/11ba102d-8f03-8199-1024-9e567ce5bf1c.png">

予め [Spring Tool Suite 4(STS)のインストール手順](https://qiita.com/t-shin0hara/items/d60116ab299a4dc8a9d0) を実施しておき、解凍したプロジェクトテンプレートを Import します。

- Spring Tool Suite 4 を起動し、以下順で解凍したプロジェクトテンプレートを Import します。
  - File
  - Import
  - Gradle
    - Existing Gradle Project
    - Welcome にて Next(default のまま)
    - Import Gradle Project にて Projectorrt directory を指定し Next
    - Import Options にて Next(default のまま)
    - Import Preview
    - Finish

### ソース

Spring Initializr から得たプロジェクトを取り込んだ直後の初期状態となります。  
[初期状態](https://github.com/oad3/application-springboot/commit/44275d9579a5d357d61f6dfe212a775afe0d8f49)

clone 後に初期状態を遡って確認頂けます。  
[main の最新](https://github.com/oad3/application-springboot)

## gradlew を利用する

Spring Initializr より雛形となるアプリケーションを入手した場合、gradlew が付属しています。
本投稿に関連する一連の CI/CD では、Gradle をインストールしませんが、全般統一して gradle によるビルドを行います。
そもそも Gradle をインストールせずにどうやって？という点は以下を引用させて頂きます。

[gradle と gradlew の違い](https://qiita.com/suin/items/266830c0ce37e823916d)

> - gradlew は Gralde + インストーラー
> - gradlew はプロジェクトの一部
> - gradlew は特定バージョンの Gralde と関連付けられている

ということで、今回は Spring Initializr より入手したプロジェクト内の gradlew を使います。  
さらには、ライブラリ開発者の作業を模した作業でも gradlew を使い回します。（文字通りコピペします。そうすることで利用される Gradle バージョンも統一されます。）

## 関連作業

- [CI/CD とは?](https://qiita.com/wf-kenji-ikeda/items/bfb6d5e21b33d0cca83b)
- [Azure Devops (Artifacts) を無償、無料で使う](https://qiita.com/wf-kenji-ikeda/items/9c21859d8b5b6a63246e)
- [Spring Tool Suite 4 インストール、Spring Initializr 、gradlew の利用](https://qiita.com/wf-kenji-ikeda/items/d00766da8a4076ec43ed)
- [Spring Boot Web アプリケーションを作る](https://qiita.com/wf-kenji-ikeda/items/1e64e44094ce8a1d997f)
- [Jar の Library を作り、Azure Artifacts を利用して成果物を配布する](https://qiita.com/wf-kenji-ikeda/items/696bda335a8933abfcb3)
- [ライブラリ開発者より指定されたバージョンを利用してアプリを作る](https://qiita.com/wf-kenji-ikeda/items/5bf06ce19c52e73a5463)
- [アプリを Docker 、Docker Compose でコンテナを動かしてみる](https://qiita.com/wf-kenji-ikeda/items/e6604ea6ae257f3925a7)
- [Azure Devops (PileLines) を無償、無料で使う](https://qiita.com/wf-kenji-ikeda/items/451838da3b4ac45a8d65)
- [Azure Devops (PileLines) でテスト、ビルド、イメージプッシュをする](https://qiita.com/wf-kenji-ikeda/items/5ddf6158bb98c4174db9)
- [minikube(kubernetes) でコンテナを動かしてみる](https://qiita.com/wf-kenji-ikeda/items/95604d83850a17b91c46)
- [nginx のコンテナを Docker や minikube(kubernetes) で動かし、静的コンテンツ公開工程を模倣](https://qiita.com/wf-kenji-ikeda/items/bf6cb1b7a047f562d309)

## 参考記事

[Spring Tool Suite 4(STS)のインストール手順](https://qiita.com/t-shin0hara/items/d60116ab299a4dc8a9d0)  
[Spring Initializr クイックスタート](https://spring.pleiades.io/quickstart)  
[gradle と gradlew の違い](https://qiita.com/suin/items/266830c0ce37e823916d)