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)