why
Docker イメージを生成して ECR に push したかった。
そのために、Jar ファイルを実行可能な状態にする。
jar ファイルとは
https://docs.oracle.com/javase/jp/7/technotes/guides/jar/jarGuide.html
Java ARchive の略。
Java/Kotlin のアプリのビルド後の成果物。
Zip ファイルに近い仕様。
.zip に拡張子を変えればダブルクリップで開ける。
jar -tf コマンドで中身が見れる。
jar コマンドで実行できる。
結論
プロジェクトは spring302
./gradlew build このコマンドでビルドする。
spring302-0.0.1-SNAPSHOT.jar すると、plain と plain ではない jar ファイルが生成される。
java -jar build/libs/spring302-0.0.1-SNAPSHOT.jar plain ではない jar ファイルを実行することで
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.0.2) c.k.spring302.Spring302ApplicationKt : Started Spring302ApplicationKt in 4.151 seconds Spring アプリが実行された。
原因
Kotlin で作ったプレーンな jar ファイルは実行できない。
IntelliJ のビルドボタンのクリックでは
- {app}-{ver}-plain.jar
これしか生成されない。
一方、.gradlew/ build コマンドで実行すると
- {app}-{ver}.jar
- {app}-{ver}-plain.jar
これらが両方出力される。
IntelliJ ではプレーンではない jar ファイルが出力できないのが原因。
まとめ
IntelliJ で Kotlin Spring Gradle のアプリをビルドして実行するためには
- Spring Initailizer で Gradle x Kotlin でプロジェクト生成
-
./gradlew buildでビルド - java -jar build/libs/{projectName}-{version}.jar で実行
これで実行できる。


Top comments (0)