Kotlin으로fatjar(shadowjar)を作る(kts版)

2995 단어
毎回fatjarを作るときにやり方ググるのが面倒なので自分の記事としてmemorishておきます.
なおGradleはkts등이 됩니다.

参考



fatjar 依存 とは ライブラリ ライブラリ も 含め た た jar ファイル ファイル です.. 通常 通常 の の の の を し た た 場合 場合 に 生成 さ れる れる れる れる ファイル ファイル は 依存 依存 ライブラリ ライブラリ は は 含ま れ て い い なく 、 その を を する 際 に に は は 依存 ライブラリ 指定 指定 し て あげる あげる 必要 必要 必要 必要 必要 必要 実行 実行 実行 を を を を を を をあります.
fatjar(을)를 생성할 수 있습니다.
なお、ここまでfatjarと書いていますが、実際に作成に使用するのはshadowjar입니다.

手順



新しいバージョンが常に出ているはずなので、最新のバージョンはこちらで確認しましょう
https://imperceptiblethoughts.com/shadow/getting-started/

build.gradle.kts

plugins {
    kotlin("jvm") version "1.6.20"  // ここはもともと書いてあるはず
    id("com.github.johnrengelman.shadow") version "7.1.2"
    id("java")
}

// jarファイルを実行時に実行されるメインファイルのクラスを指定する。
val jar by tasks.getting(Jar::class) {
    manifest {
        // mainメソッドが存在するファイルのパスに、末尾にKtを付与したものです。
        attributes["Main-Class"] = "packagename.XxxxxXxxxxKt"
    }
}


こうすることで、

gradle shadowJar


build/libs/xxxxxxxxx-1.0-SNAPSHOT-all.jar にshadowJar가 생성됩니다.
このjarを以下のように実行すると

java -jar build/libs/xxxxxxxxx-1.0-SNAPSHOT-all.jar


정식 한정된 packagename.XxxxxXxxxxKt 의 메인 메소드가 판매됩니다.

もしほかのmain메소드を実行したい場合は

java -cp build/libs/xxxxxxxxx-1.0-SNAPSHOT-all.jar packagename.YyyyyyYyyyyyKt


のように実行する ことができます.この場合、 build.gradle.ktsjar manifest の記載は不要になります.(その代わり java -jar では実行できない)

以上です.shadowJarを使うだけであれば、pluginに2行追加するだけで良いので非常に楽です.ただ、依存の衝突などが発生した場合は大変ですがその際はMergeStrategyを記述する必要があります.

좋은 웹페이지 즐겨찾기