Je lis la documentation Maven et je suis tombé sur le nom «uber-jar».
Que signifie un uber-jar et quelles sont ses caractéristiques / avantages?
Je lis la documentation Maven et je suis tombé sur le nom «uber-jar».
Que signifie un uber-jar et quelles sont ses caractéristiques / avantages?
Réponses:
Über
est le mot allemand pour above
ou over
(il est en fait apparenté à l'anglais over
).
Par conséquent, dans ce contexte, un uber-jar est un "over-jar", un niveau supérieur à un simple JAR (a) , défini comme celui qui contient à la fois votre package et toutes ses dépendances dans un seul fichier JAR. On peut penser que le nom vient de la même écurie que ultrageek, superman, hyperespace et métadonnées, qui ont tous des significations similaires "au-delà de la normale".
L'avantage est que vous pouvez distribuer votre uber-jar sans vous soucier du fait que les dépendances soient installées ou non à la destination, car votre uber-jar n'a en fait aucune dépendance.
Toutes les dépendances de vos propres objets dans le uber-jar se trouvent également dans cet uber-jar. Comme toutes les dépendances de ces dépendances. Etc.
(a) Je ne devrais probablement pas avoir à expliquer ce qu'est un JAR à un développeur Java mais je vais l'inclure pour être complet. Il s'agit d'une archive Java, essentiellement un fichier unique qui contient généralement un certain nombre de fichiers de classe Java ainsi que les métadonnées et les ressources associées.
über
et over
sont le résultat d'un changement vocal systématique dans le Vieux - germanique qui peut également être observée dans ces paires de mots: geben/give
, leben/live
, haben/have
, heben/heave
et beaucoup d' autres.
ubar jar est également connu sous le nom de fat jar ie pot avec dépendances.
Il existe trois méthodes courantes pour construire un pot Uber:
La définition de Paxdiablo est vraiment bonne.
De plus, veuillez considérer la livraison d'un uber-jar est parfois très intéressante, si vous voulez vraiment distribuer un logiciel et ne voulez pas que le client doive télécharger les dépendances par lui-même. Comme inconvénient, si leur propre politique n'autorise pas l'utilisation de certaines bibliothèques, ou s'ils doivent lier certains composants supplémentaires (slf4j, bibliothèques conformes au système, bibliothèques arch specialiez, ...) cela leur augmentera probablement les difficultés .
Vous pouvez effectuer cela:
Une solution plus propre consiste à fournir sa bibliothèque séparément; maven-shadow-plugin a un descripteur préconfiguré pour cela. Ce n'est pas plus compliqué à faire (avec maven et son plugin).
Enfin, une très bonne solution consiste à utiliser un bundle OSGI. Il y a plein de bons tutoriels là-dessus :)
Pour plus de configuration, veuillez lire ces rubriques:
Une archive Java exécutable autonome. Dans le cas des uberjars WildFly Swarm, il s'agit d'un seul fichier .jar contenant votre application, les parties de WildFly nécessaires pour la prendre en charge, un référentiel interne Maven de dépendances, plus un shim pour tout amorcer. regarde ça
Skinny - Contient UNIQUEMENT les bits que vous tapez littéralement dans votre éditeur de code, et RIEN d'autre.
Mince - Contient tous les éléments ci-dessus PLUS les dépendances directes de votre application (pilotes db, bibliothèques d'utilitaires, etc.).
Hollow - L'inverse de Thin - Contient uniquement les bits nécessaires pour exécuter votre application mais ne contient PAS l'application elle-même. Fondamentalement, un «serveur d'applications» préemballé sur lequel vous pouvez ensuite déployer votre application, dans le même style que les serveurs d'applications Java EE traditionnels, mais avec des différences importantes.
Fat / Uber - Contient le peu que vous vous écrivez littéralement PLUS les dépendances directes de votre application PLUS les bits nécessaires pour exécuter votre application «seule».
Source: article de Dzone
Republié à partir de: https://stackoverflow.com/a/57592130/9470346