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)