Gradleにはjarを生成するjar
タスクが存在し、jarファイルを作ることができるが、依存ライブラリは含まれないのでそれ単体では実行できない。
java -jar ./build/libs/hello-gradle.jar
no main manifest attribute, in ./build/libs/hello-gradle.jar
アプリとしてデプロイや配布するときは、依存ライブラリ入りのjar(fat jar)を作りたい。
Gradle Shadow Plugin
Gradle Shadow PluginはGradleでfat jarを簡単に作れるようにしてくれるプラグインだ。
使い方はこう。
まず、build.gradle
に下記を書き足す:
build.gradle
plugins {
id 'com.github.johnrengelman.shadow' version '5.0.0'
id 'java'
}
なお、5.0.0
のバージョン部分は、公式ドキュメントにて最新バージョンを確認してほしい。
次に、shadowJar
タスクが追加されたことを確認しておく:
./gradlew tasks
> Task :tasks
------------------------------------------------------------
Tasks runnable from root project
------------------------------------------------------------
...
Shadow tasks
------------
knows - Do you know who knows?
shadowJar - Create a combined JAR of project and runtime dependencies
shadowJar
タスクを実行するとfat jarが作られる:
./gradlew shadowJar
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 execute
作られたjarを実行してみる:
java -jar ./build/libs/hello-gradle-all.jar
Hello world.