Sto leggendo la documentazione di Maven e ho trovato il nome "Uber-Jar".
Cosa significa uber-jar e quali sono le sue caratteristiche / vantaggi?
Sto leggendo la documentazione di Maven e ho trovato il nome "Uber-Jar".
Cosa significa uber-jar e quali sono le sue caratteristiche / vantaggi?
Risposte:
Über
è la parola tedesca per above
o over
(in realtà è in conoscenza con l'inglese over
).
Quindi, in questo contesto, un uber-jar è un "over-jar", a un livello superiore da un semplice JAR (a) , definito come uno che contiene sia il pacchetto che tutte le sue dipendenze in un singolo file JAR. Si può pensare che il nome derivi dalla stessa stalla di ultrageek, superman, iperspazio e metadati, che hanno tutti significati simili di "oltre il normale".
Il vantaggio è che puoi distribuire il tuo uber-jar e non preoccuparti affatto se le dipendenze sono installate o meno nella destinazione, poiché il tuo uber-jar in realtà non ha dipendenze.
Tutte le dipendenze delle tue cose all'interno di Uber-Jar sono anch'esse all'interno di Uber-Jar. Come tutte le dipendenze di tali dipendenze. E così via.
(a) Probabilmente non avrei dovuto spiegare cosa sia un JAR a uno sviluppatore Java, ma lo includerò per completezza. È un archivio Java, fondamentalmente un singolo file che contiene in genere un numero di file di classe Java insieme a metadati e risorse associati.
über
e over
sono il risultato di un cambiamento vocale sistematica in Old germanica che può anche essere osservata in queste coppie di parole: geben/give
, leben/live
, haben/have
, heben/heave
e molti altri.
Il barattolo ubar è anche noto come barattolo grasso, cioè barattolo con dipendenze.
Esistono tre metodi comuni per costruire un vaso Uber:
La definizione di Paxdiablo è davvero buona.
Inoltre, ti preghiamo di considerare che consegnare un Uber-Jar a volte è piuttosto interessante, se vuoi davvero distribuire un software e non vuoi che i clienti debbano scaricare le dipendenze da soli. Come svantaggio, se la propria politica non consente l'utilizzo di alcune librerie o se devono associare alcuni componenti extra (slf4j, librerie compatibili con il sistema, librerie arch specialiez, ...) ciò probabilmente aumenterà le difficoltà per loro .
Puoi farlo:
Una soluzione più pulita consiste nel fornire separatamente la libreria di tredici; maven-shade-plugin ha un descrittore preconfigurato per questo. Questo non è più complicato da fare (con Maven e il suo plugin).
Infine, un'ottima soluzione consiste nell'utilizzare un pacchetto OSGI. Ci sono molti buoni tutorial su questo :)
Per ulteriori configurazioni, leggi questi argomenti:
Un archivio Java eseguibile autonomo. Nel caso degli uberjars di WildFly Swarm, si tratta di un singolo file .jar contenente la tua applicazione, le parti di WildFly necessarie per supportarlo, un repository interno di dipendenze Maven, oltre a uno spessore per avviare tutto. guarda questo
Skinny - Contiene SOLO i bit digitati letteralmente nel tuo editor di codice e NIENTE altro.
Sottile : contiene tutto quanto sopra PLUS le dipendenze dirette dell'app (driver db, librerie di utilità, ecc.).
Hollow : l'inverso di Thin: contiene solo i bit necessari per eseguire l'app ma NON contiene l'app stessa. Fondamentalmente un "server di app" preconfezionato sul quale è possibile distribuire successivamente l'app, nello stesso stile dei server di app Java EE tradizionali, ma con differenze importanti.
Fat / Uber - Contiene il bit che letteralmente ti scrivo PIÙ le dipendenze dirette della tua app PIÙ i bit necessari per far funzionare la tua app "da sola".
Fonte: articolo di Dzone
Ripubblicato da: https://stackoverflow.com/a/57592130/9470346