Maven/Gradleによるアプリケーション作成

参考書籍Spring Boot2 プログラミング入門 掌田津耶乃


目次

はじめに
1.Maven
2.Gradle
3.STSによるプロジェクト作成
STSでGradleを利用する


はじめに

Spring BootのプロジェクトはSTSでも作成できますがSpring Bootの仕組みが隠蔽されていますので、
ここではMavenやGradleを使い基本を学習します。
Spring Bootでは、MavenGradleという2つのビルドツールをサポートしています。

1.Maven

  • 専用のXMLファイルを作成してビルド処理を記述します。
  • Mavenは、リポジトリによってライブラリを管理します。
  • セントラルリポジトリは標準でサポートされ、Javaの開発で用いられるほとんどのライブラリが用意されており、Maven経由でダウンロードして利用できます。
  • Mavenは、Spring Framework以外にもさまざまなフレームワークなどで使われます。

2.Gradle

  • Gradleは、Groovyによるビルドツールです。ビルドの情報や処理などはすべてGroovyによるスクリプトとして記述されます。
  • Mavenのセントラルリポジトリを利用できるため、Mavenの膨大な資産を使ったビルド処理が作成できます。

3.STS


1.Maven

■Mavenのセットアップ(P83)

MavenのダウンロードページのFiles項目のMavenバイナリをダウンロードします。
WindowsならZIP、Macならtar.gzを選択すればよいでしょう。
ダウンロードしたら適当な場所に解凍します。

■Mavenでプロジェクトを生成する(P86)

コマンドプロンプトで以下を実行します。

生成途中で数回入力待ちになりますので今回は以下のように入力します。

Choose a number or apply filter …..
このままEnterキーを押します。
Choose a number: (クイックスタート・バージョンの選択)
maven-archetype-quickstartという機能のバージョンの選択です。デフォルトで最新になっていますのでEnterキーを押します。
Define value for property ‘groupId’:: (グループIDの入力)
今回は「com.mizutani.springboot」としました。
Define value for roperty ‘artifactId’:: (アーティファクトIDの入力)
これが、いわばアプリケーション名に相当するものでしょう。ここでは「MyBootApp」としました。
Define value for roperty ‘version’: 1.0-SNAPSHOT:: (バージョンの入力)
プロジェクトをWARファイルなどに変換するとき、デフォルトで付けられるバージョンのテキストです。デフォルトのままでよいでしょう。
Define value for property ‘package’: (パッケージ名の指定)
プロジェクトのプログラムにデフォルトで設定されるパッケージです。ここではデフォルトの「com.mizutani.springboot」のままでEnterキーを押します。
Y::
Yを入力します。

以上でプロジェクトが生成されMyBootAppフォルダが作成されています。

■コンパイル(P91)

プロジェクトフォルダに移動し、以下を実行します。

■パッケージ化(P92)

プロジェクトフォルダで、以下を実行します。

※この状態では、JARファイルにはMain-Classの設定がされていないため、Executable JARにはなっていません。

■プラグインによるビルド・実行(P93)

実を言えば、Spring Bootにはプラグインが用意されており、プロジェクトのコンパイル・パッケージ化もすべてやってくれます。
ただし!今、このコマンドを実行してもエラーになります。それは、必要な情報がMavenのビルド設定を記述したファイルpom.xmlに書かれていないからです。


2.Gradle

■Gradleのセットアップ(P93)

Gradleはこのサイトで公開されています。
Gradleのインストールにはさまざまな方法がありますが、ここでは基本的な「プログラム本体をダウンロードしてインストールする」というやり方をします。

ます、Gradle本体をダウンロードします。
Releaseページで最新版のbinary-onlycompleteをダウンロードします。
ダウンロードしたら適当な場所に解凍します。

■Gradleでプロジェクトを作成する(P96)

Gradleでは、Mavenのようにプロジェクトの基本的なファイルやフォルダを自動生成するような機能はありません。

コマンドプロンプトで「MyBootGApp」というフォルダをを作成し、ここに移動します。
Gradleの初期化を行います。以下のコマンドを実行します。

これで、フォルダの中にGradleが必要とするファイル類が作成されます。ただし、プログラム関係は一切ありません。
いわば、「Gradleを使うための入れ物の部分」だけができた状態といえます。

■Gradleのビルドと実行(P97)

ビルドは以下のコマンドを実行します。これで、プロジェクトがビルドされ、JARファイルにパッケージ化されます。
パッケージは「target」フォルダを作成し、その中に「libs」フォルダを用意して、そこに保存されます。

プログラムの実行は作成されたJARファイルをそのままjavaコマンドで実行できます。例えば以下のようになります。

※ただし!今この段階でこれらの作業を実行してもビルドや実行はできません。なぜなら、まだbuild.gradleを記述していないからです。
続きは後ほど行います。


3.STSによるプロジェクト作成

STSでは、MavenやGradleを利用したSpring Bootプロジェクトを作成できます。
標準ではMavenが組み込み済みになっています。

■STSでMavenベースのプロジェクトを作る(P98)

STSのメニューで[ファイル]->[新規]->[Spring スターター・プロジェクト]を選びます。

[新規 Spring スターター・プロジェクト]ダイアログで、以下のように設定します。

サービスURL ???
名前 プロジェクト名です。「MyBootApp」としておきます。
デフォルト・ロケーションを使用 デフォルトのほぞんばしょにほかんするためのちぇっくです。これはONにしておきます。
ロケーション 上のチェックがOFFのとき、保存場所を入力します。設定不要です。
プロジェクトのタイプを選択します。「Maven」を選びます。
パッケージング パッケージの方式を選択します。ここでは「Jar」にします。
Java バージョン Javaのバージョンを選びます。ここでは「8」にしておきます。
言語 使用言語の選択です。「Java」にしておきます。
グループ グループIDを指定します。「com.tuyano.springboot」としておきます。
成果物 アーティファクトIDを指定します。「MyBootApp」としておきます。
バージョン バージョン名を入力します。デフォルトで「0.0.1-SNAPSHOT」となっているので、そのままにしておきます。
説明 説明文を記入します。「sample project for Spring Boot」としておきましょう。
パッケージ プログラムを配置するパッケージの指定です。「com.tuyano.springboot」とします。
ワーキング・セット ワーキングセットは使わないので、デフォルトのままにしておきましょう。

[次へ]を選ぶと[新規 Spring スターター・プロジェクト依存関係]ダイアログが表示されます。
このプロジェクトで使用するフレームワークやライブラリなどを選択する画面と考えてください。
最低限のものとして[Web]を展開した中の[Web]だけを選択しておきましょう。

[次へ]を選ぶと[新規 Spring スターター・プロジェクト]ダイアログが表示されます。
STSがアクセスしてプロジェクトをダウンロードするためのURLです。ここは勝手に修正したりせず、そのまま[完了]を選択します。

■プロジェクトを実行してみる(P104)

まず、パッケージエクスプローラーで、プロジェクトのフォルダMyBootAppを選択します。
メニューの[実行]->[実行]->[Spring Boot アプリケーション]を選択すると実行されます。
ブラウザで「localhost:8080」にアクセスすると、おそらく「Whitelabel Error Page」いうメッセージが表示されるはずです。これは「まだページがない」というエラーです。

■Spring Bootアプリケーションの仕組み(P105)

今回は、サーバも起動していないのに動きました。そこが、従来のSpring Frameworkアプリケーションと、Spring Bootアプリケーションの大きな違いです。
Tomcatの起動もサーバーへのデプロイも不要なのです。
このようなサーバ内蔵方式は、クラウドサービスでは便利らしい。

■pom.xmlをコピペして利用する(P115)

1.Mavenで、コンパイルしても実行できませんでした。そこで、STSでビルドしたpom.xmlをMavenだけで生成したプロジェクトのpom.xmlにそのまま上書きコピペーします。そして以下のコマンドを実行します。

今回は無事に実行でき、「Hello World!」が出力されました。しかし、今回はWebアプリケーションではなく普通のアプリケーションとして実行されました。
これはクラスの定義の違いです。


STSでGradleを利用する(P117)

STSでは、Gradleを使ってプロジェクトを作成することもできます。新しいバージョンではGradleのEclipse用プラグインがインストールされているようです。

■Gradleプロジェクトを作成する(P119)

メニュー[ファイル]->[新規]->[Spring スターター・プロジェクト]を選びます。
「新規 Spring スターター・プロジェクト」ダイアログで以下を入力します。

サービスURL http://start.spring.io(デフォルト)
名前 MyBootGApp
デフォルト・ロケーションを使用 ONのまま
ロケーション 設定不要です。
Gradle(Buildship2.x)を選択
パッケージング Jar
Java バージョン 1.8?
言語 Java
グループ com.tuyano.springboot
成果物 MyBootGApp
バージョン 0.0.1-SNAPSHOT
説明 sample project for Spring Boot
パッケージ com.tuyano.springboot
ワーキング・セット OFFのまま

[次へ]を選ぶと[新規 Spring スターター・プロジェクト依存関係]ダイアログが表示されます。
このプロジェクトで使用するフレームワークやライブラリなどを選択する画面と考えてください。
最低限のものとして[Web]を展開した中の[Web]だけを選択しておきましょう。

[次へ]を選ぶと[新規 Spring スターター・プロジェクト]ダイアログが表示されます。
STSがアクセスしてプロジェクトをダウンロードするためのURLです。ここは勝手に修正したりせず、そのまま[完了]を選択します。

■プロジェクトを実行してみる(P123)

まず、パッケージエクスプローラーで、プロジェクトのフォルダMyBootGAppを選択し、
メニューの[実行]->[実行]->[Spring Boot アプリケーション]を選択すると実行されます。
ブラウザで「localhost:8080」にアクセスすると、おそらく「Whitelabel Error Page」いうメッセージが表示されるはずです。これは「まだページがない」というエラーです。

■build.gradleの内容(P124)

Gradleのビルドファイルはbuild.gradleです。Mavenのpom.xmlとだいぶ違いますが、Gradleは、Groovyのスクリプトとしてビルド情報を記述します。
実行する処理の内容や情報がそのままコードとして書かれているわけです。

以前、Gradleコマンドで作ったプロジェクトのbuild.gradleとSTSで作ったbuild.gradleには違いはcompileに指定したライブラリです。
spring-boot-starterでは一般的なアプリケーションで、spring-boot-starter-webではWebアプリケーションになります。