ホーム
SQT
小単元とクイズで楽しくトレーニング

メインナビゲーション

  • ホーム
  • 受講チケット
  • 利用ガイド
    • 受講チケット
    • 講座と教材の利用
    • 教材検索
    • 企業団体向け機能
    • セキュリティについて
    • パートナー様向け機能
  • 記事一覧

ビルドして起動する

パンくず

  • ホーム
  • Spring Boot 入門講座(試用版)
  • ビルドして起動する
音声スライド (クリックで展開/閉じる)
スライドクリック& F キーで全画面、Esc で復帰、その他のショートカット

はじめに

  • この単元で学ぶこと
    • 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 単元で扱います。

その場で起動する

# 開発中の動作確認に使用
./mvnw spring-boot:run

開発中は、この 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 を起動する

./mvnw package # package
java -jar target/todo-0.0.1-SNAPSHOT.jar # 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 単元で学びます。

確認テスト

学んだ知識をクイズ問題でチェック!

すべての単元を見るには…

Spring Boot 入門講座

Spring Boot 入門講座

HTML、CSS、Java 言語、SQL の基礎学習を終えたソフトウェア開発初心者向けの Spring Boot 入門講座です。TODO 管理アプリを題材に、使用されている技術の解説を通じて Spring Boot の基礎を学びます。

受講チケットのお求めはこちら
  • 前の単元

7 / 7 単元

講座情報

Spring Boot 入門講座(試用版)

「Spring Boot 入門講座」のお試し用サンプル教材です。確認テストの試用にはログインが必要です。ユーザー登録は無料。詳しくは、利用ガイドをご覧ください。

 講座ページへ
第1部 Web の仕組みを知る
1 ブラウザとサーバのやりとり
2 HTTP で何が送られているか
3 応答の種類とフォーム送信
4 データの渡し方と、状態を持たない HTTP
5 Java で Web アプリが動く仕組み
第2部 プロジェクトを組み立てて動かす
6 Maven とプロジェクトの構成
7 ビルドして起動する

利用ガイド

  • はじめに
  • 受講チケットの購入
  • 講座と教材の利用
  • 教材検索
  • 企業団体向け機能
  • セキュリティについて
  • パートナー様向け機能
  • 利用ガイド
  • 特定商取引法に基づく表記
  • プライバシポリシー
  • 運営会社

SQT はシナジークエストが運営するオンラインIT学習サイトです。