ฉันกำลังอ่านเอกสาร Maven และเจอชื่อ 'uber-jar'
uber-jar หมายถึงอะไรและมีคุณสมบัติ / ข้อได้เปรียบอะไร
ฉันกำลังอ่านเอกสาร Maven และเจอชื่อ 'uber-jar'
uber-jar หมายถึงอะไรและมีคุณสมบัติ / ข้อได้เปรียบอะไร
คำตอบ:
Über
เป็นคำภาษาเยอรมันสำหรับabove
หรือover
(จริง ๆ แล้วมันคุ้นเคยกับภาษาอังกฤษover
)
ดังนั้นในบริบทนี้ uber-jar คือ "over-jar" ซึ่งเพิ่มขึ้นหนึ่งระดับจาก JAR แบบง่าย(a)ซึ่งถูกกำหนดเป็นหนึ่งที่มีทั้งแพ็กเกจของคุณและการพึ่งพาทั้งหมดในไฟล์ JAR ไฟล์เดียว ชื่อสามารถถูกคิดว่ามาจากคอกม้าเดียวกับ ultrageek, superman, hyperspace และ metadata ซึ่งทั้งหมดมีความหมายคล้ายกันของ "เกินกว่าปกติ"
ข้อดีคือที่คุณสามารถแจกจ่ายของคุณ Uber-ขวดและไม่สนใจที่ทุกคนหรือไม่ว่าการอ้างอิงมีการติดตั้งที่ปลายทางเช่น Uber-ขวดของคุณจริงมีไม่มีการอ้างอิง
การอ้างอิงทั้งหมดของสิ่งของของคุณภายใน uber-jar นั้นก็อยู่ใน uber-jar นั้นด้วย เช่นเดียวกับการพึ่งพาทั้งหมดของการอ้างอิงเหล่านั้น และอื่น ๆ
(a)ฉันอาจไม่ต้องอธิบายว่า JAR คืออะไรสำหรับนักพัฒนา Java แต่ฉันจะรวมไว้เพื่อความสมบูรณ์ เป็นไฟล์เก็บถาวร Java โดยทั่วไปไฟล์เดียวที่โดยทั่วไปจะมีไฟล์คลาส Java จำนวนหนึ่งพร้อมกับข้อมูลเมตาและทรัพยากรที่เกี่ยวข้อง
über
และover
เป็นผลมาจากการเปลี่ยนแปลงแกนนำในระบบเก่าดั้งเดิมซึ่งสามารถสังเกตได้ในคู่คำเหล่านี้: geben/give
, leben/live
, haben/have
, heben/heave
และอื่น ๆ อีกมากมาย
ubar jarเป็นที่รู้จักกันว่าjar ไขมันเช่นjar ที่มีการอ้างอิง
มีวิธีการทั่วไปสามวิธีในการสร้าง uber jar:
คำนิยาม Paxdiablo ดีจริงๆ
นอกจากนี้โปรดพิจารณาว่าการส่ง uber-jar นั้นค่อนข้างน่าสนใจหากคุณต้องการเผยแพร่ซอฟต์แวร์และไม่ต้องการให้ลูกค้าดาวน์โหลดการอ้างอิงด้วยตัวเอง หากนโยบายของพวกเขาไม่อนุญาตให้ใช้ไลบรารีบางอย่างหรือถ้าพวกเขาต้องผูกส่วนประกอบพิเศษบางอย่าง (slf4j, libs ที่สอดคล้องกับระบบ, arch specialiez libs, ... ) สิ่งนี้จะเพิ่มความยากให้พวกเขา .
คุณสามารถทำได้:
วิธีแก้ปัญหาที่สะอาดกว่าคือการจัดหาไลบรารี่ของคุณแยกจากกัน maven-shade-plugin มี descriptor ที่กำหนดค่าไว้ล่วงหน้าสำหรับสิ่งนั้น สิ่งนี้ไม่ซับซ้อนกว่าในการทำ (ด้วย maven และปลั๊กอิน)
ในที่สุดทางออกที่ดีจริงๆก็คือการใช้ OSGI Bundle มีแบบฝึกหัดที่ดีมากมายที่ :)
สำหรับการกำหนดค่าเพิ่มเติมโปรดอ่านหัวข้อเหล่านี้:
ไฟล์เก็บถาวร Java แบบปฏิบัติการด้วยตนเอง ในกรณีของ WildFly Swarm uberjars มันเป็นไฟล์. jar เดียวที่มีแอปพลิเคชันของคุณส่วนของ WildFly ที่จำเป็นต้องใช้เพื่อสนับสนุนมันที่เก็บ Maven ภายในของการพึ่งพารวมถึงชิมที่จะบูตมันทั้งหมด ดูนี่
สกินนี - มีเพียงบิตที่คุณพิมพ์ลงในตัวแก้ไขรหัสของคุณเท่านั้นและไม่มีอะไรอื่น
บาง - มีทั้งหมดข้างต้น PLUS ของแอพโดยตรงของแอพของคุณ (ไดรเวอร์ฐานข้อมูล, ยูทิลิตี้ไลบรารี, ฯลฯ )
Hollow - อินเวิร์สของ Thin - มีเพียงบิตที่จำเป็นในการเรียกใช้แอพของคุณ แต่ไม่มีแอพนั้น โดยพื้นฐานแล้วคือ "เซิร์ฟเวอร์แอป" ที่ทำแพ็กเกจไว้ล่วงหน้าซึ่งคุณสามารถนำแอปของคุณไปใช้ในลักษณะเดียวกับเซิร์ฟเวอร์แอป Java EE แบบดั้งเดิม แต่มีความแตกต่างที่สำคัญ
Fat / Uber - มีบิตที่คุณเขียนเองบวกกับการพึ่งพาโดยตรงของแอพของคุณรวมถึงบิตที่จำเป็นในการเรียกใช้แอปของคุณ“ ด้วยตัวเอง”
ที่มา: บทความจาก Dzone
โพสต์ซ้ำจาก: https://stackoverflow.com/a/57592130/9470346