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)