Contents
SpringBootの実行可能Jarとは?
実行可能Jar(Executable Jar)とは、そのJarファイル単体をJavaコマンドで呼び出せばWebアプリケーションが動いてくれるものです。
具体的には、自作のクラス群以外にも、
- 依存関係(依存するライブラリ・依存するクラス)
- 設定ファイル
- Tomcat本体(Webサーバー+Servletコンテナ)
上に3つを含まれていると、Jarファイル単体でWebアプリケーションとして動かすことができます。
SpringBootプロジェクトは、この実行可能Jarを作る機能が組み込まれています。このような実行可能JarはファットJar(Fat、太っちょ)と呼ばれています。
自作したクラス群だけでなく、Tomcat本体なども含むため、自然とサイズが大きめのJarファイルになります。
しかし、そのJarファイルさえあれば、Javaコマンドで実行できるのが大きなメリットです。
実行可能Jarと普通のJarの違い
普通のJarはただのクラス群です。自分で作ったJarであれ、ライブラリとして提供されたJarであれ、それ単体をJavaコマンドで実行しても、Webアプリとして成立することはありません。
例えば、Jarの中に依存関係がなければ、自作のクラス群が参照しているクラスを実行できないため、やはりWebアプリケーションとして起動できません。
例えば、Jarの中にTomcatがなければ、Webアプリケーションとして起動することができません。
WARファイルとの違い
Jarと似ているものにWarという圧縮形式があります。
WarはWeb ARchiveの略です。これは、上記の実行可能Jarのうち、Tomcat本体が含まれていないものです。
Warファイルは、別途用意したサーバー内のTomcatディレクトリのwebappsディレクトリ直下に配置して、Tomcatを起動することで、Webアプリケーションとして実行できるようになります。
SpringBootの実行可能Jarの作り方
Eclipseを使用する場合





ここでできた、
「プロジェクト名-0.0.1-SNAPSHOT.jar」というのが実行可能Jarです。
コマンドから実行可能Jarを作る場合
コマンドで実行可能Jarを作成する場合、gradle bootJarコマンドを実行します。
> gradle bootJar
gradleが開発環境にインストールされていない場合は、下記例のように、gradlew bootJarが使用できます。
>cd C:\pleiades\workspace\shop-review-api
>gradlew bootJar
BUILD SUCCESSFUL in 4s
4 actionable tasks: 4 executed
>dir
 C:\pleiades\workspace\shop-review-api のディレクトリ
2021/07/11  11:21    <DIR>          .
2021/06/29  14:36    <DIR>          bin
…
2021/07/11  11:21    <DIR>          build
…
2021/06/29  14:46    <DIR>          src
               9 個のファイル              13,957 バイト
               8 個のディレクトリ  147,695,620,096 バイトの空き領域できたbuildフォルダ>libsフォルダ を見ると、実行可能Jarが生成されています。
SpringBootの実行可能Jarの実行方法
実行可能Jarは任意のディレクトリから、java -jar コマンドで実行できます。
構文
> java -jar [実行可能jarのパス]例
>java -jar build/libs/shop-review-api-0.0.1-SNAPSHOT.jar
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.5.2)
2021-07-11 11:35:03.652  INFO 1828 --- [           main] c.n.shopreview.ShopReviewApiApplication  : Starting ShopReviewApiApplication using Java 15.0.2 on DESKTOP-8J02B7R with PID 1828 (C:\pleiades\workspace\shop-review-api\build\libs\shop-review-api-0.0.1-SNAPSHOT.jar started by edu in C:\pleiades\workspace\shop-review-api)
2021-07-11 11:35:03.659  INFO 1828 --- [           main] c.n.shopreview.ShopReviewApiApplication  : No active profile set, falling back to default profiles: default
2021-07-11 11:35:06.985  INFO 1828 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8081 (http)
2021-07-11 11:35:07.022  INFO 1828 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-07-11 11:35:07.024  INFO 1828 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.48]
2021-07-11 11:35:07.216  INFO 1828 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-07-11 11:35:07.217  INFO 1828 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3400 ms
2021-07-11 11:35:08.697  INFO 1828 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [static/index.html]
2021-07-11 11:35:09.098  INFO 1828 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''
2021-07-11 11:35:09.159  INFO 1828 --- [           main] c.n.shopreview.ShopReviewApiApplication  : Started ShopReviewApiApplication in 6.802 seconds (JVM running for 7.916)