音声スライド (クリックで展開/閉じる)
はじめに
- この単元で学ぶこと
- Maven Wrapper と基本コマンド
- 実行可能 jar と組み込みサーバ
- 到達目標
- mvnw でビルドや起動を実行できる
- jar がサーバを内蔵していると説明できる
第 7 単元では、組み立てたプロジェクトを実際にビルドして起動する方法を学びます。前の単元で pom.xml や標準プロジェクト構成を確認しました。今回は、Maven Wrapper という道具を使って、コンパイルからテスト、パッケージング、そしてアプリの起動までを実行できるようになることを目指します。あわせて、生成される jar ファイルがサーバを内蔵しているという Spring Boot の特徴も理解します。
Maven Wrapper とは
- プロジェクトに同梱される Maven 起動用スクリプト
- Windows は mvnw.cmd
- Mac / Linux は ./mvnw
- Maven 本体をインストールしなくても動く
- 決められたバージョンの Maven で実行される
- 開発者ごとの環境差をなくせる
Maven Wrapper は、プロジェクトに一緒に入っている Maven 起動用のスクリプトです。Windows では mvnw.cmd、Mac や Linux では ./mvnw というコマンドで実行します。これを使うと、パソコンに Maven 本体を自分でインストールしていなくても、必要な Maven が自動で用意されて動きます。さらに、プロジェクトが決めたバージョンの Maven で実行されるため、開発者ごとに環境が違っても同じ結果が得られます。
基本のコマンド 3 つ
| コマンド | すること |
|---|---|
| ./mvnw test | テストを実行する |
| ./mvnw package | jar にまとめる |
| ./mvnw spring-boot:run | アプリを起動する |
Maven Wrapper でよく使う基本コマンドは 3 つです。test はテストを実行します。package はコンパイルとテストを行ったうえで、成果物を jar ファイルにまとめます。spring-boot:run はアプリをその場で起動します。開発中に動きを確認したいときは spring-boot:run が手軽です。配布できる形にしたいときは package を使います。なお、テストの中身については第 37 単元で扱います。
その場で起動する
開発中は、この spring-boot:run が一番よく使うコマンドです。プロジェクトのフォルダで実行すると、コンパイルされたあとアプリが起動し、内蔵のサーバが待ち受け状態になります。あとはブラウザからアクセスして動きを確認できます。ソースコードを直すたびに、このコマンドで起動し直して確認する、という進め方になります。
実行可能 jar とは
- package で作られる 1 つの jar ファイル
- 例:todo-0.0.1-SNAPSHOT.jar
- アプリのコードと依存ライブラリを同梱
- サーバ本体(Tomcat)も中に入っている
- この 1 ファイルだけで動かせる
package コマンドを実行すると、成果物として 1 つの jar ファイルが作られます。このプロジェクトでは todo-0.0.1-SNAPSHOT.jar という名前になります。この jar には、自分が書いたアプリのコードだけでなく、必要な依存ライブラリもまとめて入っています。さらに、Web を受け付けるサーバ本体である Tomcat も同梱されています。つまり、この 1 ファイルさえあればアプリを動かせる、というのが実行可能 jar です。
組み込みサーバという考え方

従来の Java の Web アプリでは、まず別途 Web サーバを用意し、そこにアプリを配置して動かすのが一般的でした。これに対して Spring Boot では、サーバをアプリの jar の中に組み込んでしまいます。これを組み込みサーバと呼びます。サーバを別に立てる準備が要らず、jar ファイルを起動するだけでアプリが動き始めます。この手軽さが Spring Boot の実行形態の大きな特徴です。
jar を起動する
配布できる形で動かすには、まず package で jar を作り、次に
java -jar コマンドでその jar を指定して起動します。jar
はサーバを内蔵しているので、これだけでアプリが立ち上がります。生成される
jar は target フォルダの中にできるので、パスに target
を付けて指定している点にも注目してください。
起動した場所に注意
- データ保存先はコマンド設定に基づく
- 設定は spring.datasource.url の ./data
- ./ は「起動したディレクトリ」を指す
- jar を置いた場所ではなく起動した場所
- 別の場所で起動すると data も別にできる
java -jar
で起動すると、そのアプリはデータベースのファイルを data
というフォルダに保存します。この保存先は設定で ./data と書かれており、./
は起動したディレクトリを指します。ここで大切なのは、jar
ファイルが置いてある場所ではなく、コマンドを実行した場所が基準になるという点です。そのため、違うフォルダに移動して起動すると、そこに新しく
data
フォルダが作られ、前のデータは見えなくなります。設定プロパティの詳しい意味は第
11 単元と第 26 単元で扱います。
2 つの起動方法の使い分け
| 方法 | 向いている場面 |
|---|---|
| spring-boot:run | 開発中の動作確認 |
| java -jar(jar) | 完成版を配布して動かす |
ここまでで、アプリを起動する方法を 2 つ学びました。spring-boot:run
は、コードを書いては確認する開発中の作業に向いています。手早く起動できるのが利点です。一方、package
で作った jar を java -jar
で起動する方法は、完成したアプリを配布して動かす場面に向いています。1
つのファイルにまとまっているので持ち運びが簡単です。目的に応じて使い分けましょう。
まとめ
- Maven Wrapper(mvnw)で環境を揃えて実行
- 基本コマンドは test / package / spring-boot:run
- package で実行可能 jar ができる
- jar はサーバ(Tomcat)を内蔵している
- java -jar は起動した場所が基準になる
この単元では、プロジェクトをビルドして起動する方法を学びました。Maven
Wrapper
を使えば、環境を揃えたうえでコマンドを実行できます。基本のコマンドは
test、package、spring-boot:run の 3 つでした。package で作られる実行可能
jar には、アプリとサーバ本体が一緒に入っており、これ 1
つで動かせます。java -jar
で起動するときは、起動した場所が基準になる点に注意しましょう。起動ログの読み方は、次の第
11 単元で学びます。