Membuat Fat Jar di Gradle

Artikel ini bagian dari serial: • Pengantar Gradle

• Semut vs Maven vs Gradle

• Menulis Plugin Gradle Kustom

• Membuat Fat Jar di Gradle (artikel saat ini)

1. Ikhtisar

Dalam artikel singkat ini, kita akan membahas pembuatan "tabung lemak" di Gradle.

Pada dasarnya, fat jar (juga dikenal sebagai uber-jar) adalah arsip mandiri yang berisi class dan dependensi yang diperlukan untuk menjalankan aplikasi.

2. Pengaturan Awal

Mari kita mulai dengan file build.gradle sederhana untuk proyek Java dengan dua dependensi:

apply plugin: 'java' repositories { mavenCentral() } dependencies { compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25' compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25' }

3. Menggunakan Tugas Jar dari Plugin Java

Mari kita mulai dengan memodifikasi tugas jar dari plugin Java Gradle. Secara default, tugas ini menghasilkan jar tanpa ketergantungan apa pun.

Kita dapat menimpa perilaku ini dengan menambahkan beberapa baris kode. Kami membutuhkan dua hal untuk membuatnya berhasil:

  • sebuah Main-Class atribut dalam file manifest
  • Sertakan stoples dependensi

Mari tambahkan beberapa modifikasi pada tugas Gradle:

jar { manifest { attributes "Main-Class": "com.baeldung.fatjar.Application" } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } }

4. Membuat Tugas Terpisah

Jika kita ingin membiarkan tugas jar asli apa adanya, kita dapat membuat tugas terpisah yang akan melakukan pekerjaan yang sama.

Kode berikut akan menambahkan tugas baru yang disebut customFatJar:

task customFatJar(type: Jar) { manifest { attributes 'Main-Class': 'com.baeldung.fatjar.Application' } baseName = 'all-in-one-jar' from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } with jar }

5. Menggunakan Plugin Khusus

Kami juga dapat menggunakan plugin Gradle yang ada untuk membuat toples gemuk.

Dalam contoh ini kita akan menggunakan plugin Shadow:

buildscript { repositories { jcenter() } dependencies { classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1' } } apply plugin: 'java' apply plugin: 'com.github.johnrengelman.shadow'

Setelah kita menerapkan plugin Shadow, tugas shadowJar akan siap digunakan.

6. Kesimpulan

Dalam tutorial ini, kami menyajikan beberapa cara berbeda untuk membuat stoples gemuk di Gradle. Kami mengganti tugas jar default, membuat tugas terpisah dan menggunakan plugin bayangan.

Pendekatan mana yang direkomendasikan? Jawabannya adalah, tergantung.

Dalam proyek sederhana, itu cukup untuk mengganti tugas jar default atau membuat yang baru. Tetapi seiring dengan berkembangnya proyek, kami sangat menyarankan untuk menggunakan plugin, karena plugin sudah memecahkan masalah yang lebih sulit seperti konflik dengan file META-INF eksternal.

Seperti biasa, implementasi lengkap dari tutorial ini dapat ditemukan di GitHub.

« Sebelumnya Menulis Plugin Gradle Kustom