Spring bootアプリケーションをMavenでjar化し実行した際のエラーとか

 

 

バージョン情報

Spring boot version 2.1.1.RELEASE
Maven 3.6

javaコマンドで実行するJar実行ファイルを作成する。

 

mvn clean package コマンドでSpringアプリケーションをjar化。

jar化したアプリケーションをjava -jar MyApp.jar で実行してみると実行時エラーとなった。

実行時エラー その1

あらら・・・?そんな初歩的な。MANIFEST.MFくらい勝手にうまいこと作ってくれると思ってたのに・・・。Jar展開してみたらたしかにMANIFEST.MFにメインクラスの記載がない・・・。

pom.xmlにMANIFEST宣言を追加してみる。

mvnコマンド再実行。これでjar内のMANIFEST.MFにメインクラスが追加された。

実行時エラー その2 固める際の忘れもの

今度はどうやらSpring bootを起動させるための資材が見当たらない模様。っていうかjarの中身確認したら、その他必要な依存ライブラリjarが1個も入ってないやん。

依存パッケージをすべてパッケージングするようpomを書き変えてmvnを再実行。

goalなどの記載はmaven-assembly-pluginの仕様に従う。これで1つのjarの中に必要なライブラリがすべて固まった。

 

実行時エラー その3 それでもやっぱり動かない

えー。ダメかよ・・・。なんでだろ・・・?ってところでそもそも論に気付く。

pomに書かれてるはずのspring-boot-maven-pluginでspring bootアプリケーションってjar化するんじゃ・・・?なんで当初記載のなかったmaven-jar-pluginが使われてしまってたんだろう。

調べた結果、mvn実行時にspring-boot-maven-pluginを指定する方法があった。

spring-bootのmavenプラグインに実行指定を追加。
たったこれだけ。これだけでSpring bootアプリ起動しました。
さすがSpring boot。よくできてる。
その1、その2で追加したPluginの記載とかまったくいらんかったです。すいません。

ってことでSpring boot / Mavenの再学習終了の巻。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です