20
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gradle Shadow を使って fat JAR を作る手順

Last updated at Posted at 2018-04-07

Gradle プロジェクトで fat JAR を作るのに、 Gradle Shadow plugin が使える。

同じような用途に使える Gradle FatJar Plugin もあるが、メンテナンスされてないため Shadow を使うように推奨されてる。

設定

build.gradle
plugins {
    id 'com.github.johnrengelman.shadow' version '2.0.3'
    id 'java'
}

jar {
    manifest {
        attributes "Main-Class" : "app.Main"
    }
}

実行可能なJarを作るには、Main-Class 設定に、エントリポイントのClassを指定する必要がある。
Shadowは jar タスクの設定を引き継いで使用する。
それと別に Shadow 専用の設定として shadow を用意している。

fat JAR 作成

./gradlew shadowJar

これで build/libs 以下に .jar ファイルが作成されます。
.jar ファイルを実行するには、以下のコマンドを実行します。

java -jar xxx-1.0-SNAPSHOT-all.jar

Shadow がデフォルトでやってくれること

ドキュメントに書いてる内容の抜粋です。

  • プロジェクトの依存ライブラリを含めた .jar ファイルを作ってくれる。
  • プロジェクトの依存ライブラリを配置する時、以下のパターンのファイルをコピーしない。これらは署名Jarのファイルで、これらのファイルがコピーされると、実行時に署名の検証に失敗して「クラスが見つからないかロードできない」とエラーになってしまうのを防ぐため。
    • META-INF/INDEX.LIST
    • META-INF/*.SF
    • META-INF/*.DSA
    • META-INF/*.RSA

参考

Shadow Plugin User Guide & Examples
サンプルプロジェクト

20
20
0

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
  3. You can use dark theme
What you can do with signing up
20
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?