IntelliJ IDEA の Spring Boot プロジェクトで実行可能モジュール(jar)を生成する
IntelliJ IDEA で Spring Boot の開発をする手順を書きました。
今回はこの記事の補足記事です。そこから実行可能な本番モジュールとなる Jar ファイルを生成する方法とその実行方法を説明しています。
尚、当該記事の内容は、バージョン 2020.03 を基にしています。
環境とプロジェクトの準備
まずは設定ダイアログを立ち上げましょう。
こちらの記事のとおりに作成した前提とします。各種バージョンも上記記事を前提とします。
実行モジュールの作成
生成するモジュールは Jar
さて、今回は Spring Boot で Jar ファイルを作成する訳ですが、 Spring Boot 以前はサーブレットコンテナ(Tomcat, WebLogic, WebSphere などなど)に War ファイルを乗せるのが常識でした。
Spring Boot では「面倒だからサーブレットコンテナも含めた Jar ファイルにしちゃおうぜ! んでサーブレットコンテナごと実行できりゃいいでしょ!」という荒業を行っております。なので、今回はその通りに Jar ファイルを生成します。
この、サーブレットコンテナを含めた Jar ファイルを「Fat Jar」などと呼ぶことがあるようですね。
※尚、既にサーブレットコンテナが用意されている場合は War ファイルを生成すればよいと思います&その方法も用意されています。が、今回はその説明は割愛します。
Jar を作成する
IntelliJ IDEA で Gradle プロジェクトをインポートすると、自動で Gradle のプラグインがインストールされます。ウインドウ右側に「Gradle」タブがあるのでここを広げて build
を実行します。
- ウインドウ右側の「Gradle」タブをクリック
- [プロジェクト名] > [Tasks] > [build] > [build] を選択
- ここをダブルクリック、もしくは、右クリックで [Run プロジェクト名] をクリックする
ウインドウ下部にビルド結果が表示されます。「BUILD SUCCESSFUL」と表示されたら成功です。
ウインドウ左側のエクスプローラより [プロジェクト名] > [build] > [libs] 配下に Jar ファイルが生成されました。
Jar を実行する
普通の jar ですので、 java -jar (jarファイル)
で実行できます。
今回は、 IntelliJ IDEA の Terminal から先程生成された jar を実行しますので、 java -jar build/libs/sample-spring-boot-0.0.1-SNAPSHOT.jar
のように打てばOKです。
尚、私の環境ではすでに java
コマンドに PATH が通っています。( java --version
でバージョン表示されている。)Terminal から java
コマンドを打つには事前に設定が必要になりますので、適宜実施しておいてください。
$ java --version openjdk 15.0.1 2020-10-20 OpenJDK Runtime Environment (build 15.0.1+9-18) OpenJDK 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing) $ java -jar build/libs/sample-spring-boot-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.3.2.RELEASE) 2020-12-23 18:16:44.353 INFO 17092 --- [ main] e.s.s.SampleSpringBootApplication : Starting SampleSpringBootApplication on DESKTOP-LF5VSKB with PID 17092 (C:\Users\hiran\Workspace\intellij\sample-spring-boot\build\libs\sample-spring- boot-0.0.1-SNAPSHOT.jar started by hiran in C:\Users\hiran\Workspace\intellij\sample-spring-boot) 2020-12-23 18:16:44.356 INFO 17092 --- [ main] e.s.s.SampleSpringBootApplication : No active profile set, falling back to default profiles: default 2020-12-23 18:16:45.411 INFO 17092 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2020-12-23 18:16:45.425 INFO 17092 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2020-12-23 18:16:45.426 INFO 17092 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.37] 2020-12-23 18:16:45.507 INFO 17092 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2020-12-23 18:16:45.507 INFO 17092 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1094 ms 2020-12-23 18:16:45.712 INFO 17092 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2020-12-23 18:16:45.894 INFO 17092 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2020-12-23 18:16:45.903 INFO 17092 --- [ main] e.s.s.SampleSpringBootApplication : Started SampleSpringBootApplication in 1.984 seconds (JVM running for 2.401) 2020-12-23 18:17:13.004 INFO 17092 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2020-12-23 18:17:13.005 INFO 17092 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2020-12-23 18:17:13.010 INFO 17092 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
http://localhost:8080 へアクセスすると、 IndexController
が起動して返却値がブラウザに表示されます。
参考
参考と言いますか、ここまで書いておいて何ですが、公式サイトにわかりやすく説明されてますね。。。
https://pleiades.io/help/idea/getting-started-with-gradle.html