https://stackoverflow.com/questions/41794914/how-to-create-the-fat-jar-with-gradle-kotlin-script
val projectName = "my-projet"
application {
// mainを設定(コンパイル後Ktがつくことに注意)
mainClass.set("com.MainKt")
}
// `fatJar` の名前でタスクを定義する
task("fatJar", Jar::class) {
archiveBaseName.set(projectName)
manifest {
attributes["Main-Class"] = mainClass
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from(
// classpathからjarファイルを取得して、zipに加える
configurations.runtimeClasspath.get().map {
if (it.isDirectory) it else zipTree(it)
}
)
exclude("META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA")
}
gradle installDist したときのディレクトリ名と実行ファイル名の設定
my-project$ ./gradlew installDist
# すると以下のツリーができる
# my-project/build/install/my-project/lib
# my-project/build/install/my-project/lib/...
# my-project/build/install/my-project/bin
# my-project/build/install/my-project/bin/my-project (executable)