search
LoginSignup
32
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

Organization

Gradle: 依存ライブラリ入りのjarを作る

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.

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
32
Help us understand the problem. What are the problem?