Saya membaca dokumentasi Maven dan menemukan nama 'uber-jar'.
Apa arti uber-jar dan apa saja fitur / kelebihannya?
Saya membaca dokumentasi Maven dan menemukan nama 'uber-jar'.
Apa arti uber-jar dan apa saja fitur / kelebihannya?
Jawaban:
Über
adalah kata Jerman untuk above
atau over
(sebenarnya serumpun dengan bahasa Inggris over
).
Karenanya, dalam konteks ini, uber-jar adalah "over-jar", satu tingkat lebih tinggi dari JAR sederhana (a) , didefinisikan sebagai yang berisi paket Anda dan semua dependensinya dalam satu file JAR tunggal. Nama ini dapat dianggap berasal dari kandang yang sama dengan ultrageek, superman, hyperspace, dan metadata, yang semuanya memiliki arti yang sama "di luar normal".
Keuntungannya adalah Anda dapat mendistribusikan tabung-uber Anda dan tidak peduli sama sekali apakah dependensi dipasang atau tidak, karena tabung-uber Anda sebenarnya tidak memiliki dependensi.
Semua dependensi barang Anda sendiri di dalam toples-uber juga ada di dalam jar-uber itu. Seperti semua dependensi dari dependensi tersebut. Dan seterusnya.
(a) Saya mungkin tidak perlu menjelaskan apa itu JAR untuk pengembang Java tapi saya akan memasukkannya untuk kelengkapan. Ini adalah arsip Java, pada dasarnya satu file yang biasanya berisi sejumlah file kelas Java bersama dengan metadata dan sumber daya terkait.
über
dan over
merupakan hasil dari pergeseran vokal yang sistematis di Old Jermanik yang juga dapat diamati pada pasangan kata ini: geben/give
, leben/live
, haben/have
, heben/heave
dan banyak lagi.
guci ubar juga dikenal sebagai guci lemak yaitu guci dengan dependensi.
Ada tiga metode umum untuk membuat tabung uber:
Definisi Paxdiablo sangat bagus.
Selain itu, harap pertimbangkan untuk mengirimkan uber-jar terkadang cukup menarik, jika Anda benar-benar ingin mendistribusikan perangkat lunak dan tidak ingin pelanggan harus mengunduh dependensi sendiri. Sebagai imbalannya, jika kebijakan mereka sendiri tidak mengizinkan penggunaan beberapa perpustakaan, atau jika mereka harus mengikat beberapa komponen tambahan (slf4j, lib sistem yang sesuai, lib lengkungan specialiez, ...) ini mungkin akan meningkatkan kesulitan bagi mereka .
Anda dapat melakukan itu:
Solusi yang lebih bersih adalah menyediakan tiga perpustakaan secara terpisah; maven-shade-plugin memiliki deskriptor yang telah dikonfigurasikan sebelumnya untuk itu. Ini tidak lebih rumit untuk dilakukan (dengan maven dan plugin-nya).
Akhirnya, solusi yang sangat bagus adalah menggunakan Bundel OSGI. Ada banyak tutorial bagus tentang itu :)
Untuk konfigurasi lebih lanjut, baca topik-topik tersebut:
Arsip Java mandiri yang dapat dieksekusi. Dalam kasus WildFly Swarm uberjars, ini adalah file .jar tunggal yang berisi aplikasi Anda, bagian-bagian dari WildFly yang diperlukan untuk mendukungnya, repositori dependensi Maven internal, ditambah shim untuk mem-bootstrap semuanya. Lihat ini
Kurus - Berisi HANYA bit yang Anda ketik dalam editor kode Anda, dan TIDAK ADA yang lain.
Thin - Berisi semua hal di atas PLUS ketergantungan langsung aplikasi Anda (driver db, perpustakaan utilitas, dll).
Hollow - Kebalikan dari Thin - Berisi hanya bit yang diperlukan untuk menjalankan aplikasi Anda tetapi TIDAK mengandung aplikasi itu sendiri. Pada dasarnya "server aplikasi" yang telah dikemas sebelumnya yang nantinya dapat Anda gunakan, dengan gaya yang sama dengan server aplikasi Java EE tradisional, tetapi dengan perbedaan penting.
Fat / Uber - Berisi bit yang Anda tulis sendiri PLUS ditambah dependensi langsung aplikasi Anda PLUS bit yang diperlukan untuk menjalankan aplikasi “sendiri”.
Sumber: Artikel dari Dzone
Diposting ulang dari: https://stackoverflow.com/a/57592130/9470346