Je suis en train de lire la documentation de Maven et je suis tombé sur le nom uber-jar
.
Que fait un uber-jar
et quels sont ses caractéristiques/avantages ?
Je suis en train de lire la documentation de Maven et je suis tombé sur le nom uber-jar
.
Que fait un uber-jar
et quels sont ses caractéristiques/avantages ?
Über
est le mot allemand pour above
o over
(il s'agit en fait d'un équivalent de l'anglais over
).
Ainsi, dans ce contexte, un uber-jar est un "sur-jar", un niveau supérieur à un simple JAR. (a) défini comme celui qui contient à la fois votre paquet y toutes ses dépendances dans un seul fichier JAR. On peut penser que le nom vient de la même écurie que ultrageek, superman, hyperspace et metadata, qui ont tous des significations similaires de "au-delà de la normale".
L'avantage est que vous pouvez distribuer votre uber-jar sans vous soucier de savoir si les dépendances sont installées ou non à la destination, puisque votre uber-jar est en réalité a aucune dépendance.
Toutes les dépendances de votre propre matériel dans l'uber-jar sont également dans cet uber-jar. Comme le sont toutes les dépendances de ces dépendances. Et ainsi de suite.
(a) Je dois probablement ne devrait pas Je n'ai pas besoin d'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, c'est-à-dire un fichier unique qui contient généralement un certain nombre de fichiers de classe Java ainsi que des métadonnées et des ressources associées.
C'est étrange... Je suis allemand et je connais bien sûr le mot "über" et sa signification. Mais pourquoi est-il utilisé ici dans le contexte de Maven ? Dans ce cas, cela signifie qu'une ou plusieurs choses sont rassemblées et sont accessibles via le jar généré. Malheureusement, cette astuce n'a pas résolu mon problème Maven ;-)
BTW, über
y over
sont le résultat d'un changement vocal systématique en vieux germanique qui peut également être observé dans ces paires de mots : geben/give
, leben/live
, haben/have
, heben/heave
et bien d'autres encore.
ubar jar est également connu sous le nom de pot de graisse c'est-à-dire jar avec des dépendances.
Il existe trois méthodes courantes pour construire un pot d'uber :
La définition de Paxdiablo est vraiment bonne.
En outre, veuillez considérer que la livraison d'un uber-jar est parfois très utile, si vous voulez vraiment distribuer un logiciel et ne voulez pas que le client télécharge les dépendances par lui-même. En revanche, si leur propre politique ne permet pas l'utilisation d'une bibliothèque, ou s'ils doivent lier des composants supplémentaires (slf4j, librairies compatibles avec le système, librairies spéciales pour l'architecture, ...), cela augmentera probablement les difficultés pour eux.
Vous pouvez le faire :
Une solution plus propre est de fournir leur bibliothèque séparément ; maven-shade-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 beaucoup de bons tutoriels sur ce sujet :)
Pour une configuration plus détaillée, veuillez lire ces rubriques :
Skinny - Contient UNIQUEMENT les éléments que vous tapez littéralement dans votre éditeur de code, et RIEN d'autre.
Mince - Contient tout ce qui précède PLUS les dépendances directes de votre application (pilotes de db, bibliothèques utilitaires, etc.).
Creux - L'inverse de Thin - Contient seulement les bits nécessaires pour faire fonctionner votre application mais ne contient PAS l'application elle-même. Il s'agit essentiellement d'un "serveur d'applications" préemballé sur lequel vous pouvez déployer votre application ultérieurement, dans le même style que les serveurs d'applications Java EE traditionnels, mais avec des différences importantes.
Fat/Uber - Contient la partie que vous avez littéralement écrite vous-même PLUS les dépendances directes de votre application PLUS les éléments nécessaires pour faire fonctionner votre application "toute seule".
Source : Article de Dzone
Reposé de : https://stackoverflow.com/a/57592130/9470346
Une archive Java autonome et exécutable. Dans le cas des uberjars WildFly Swarm, il s'agit d'un seul fichier .jar contenant votre application, les parties de WildFly requises pour la prendre en charge, un référentiel Maven interne de dépendances, plus un shim pour amorcer le tout. voir ceci
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
J'ai également vu occasionnellement qu'on l'appelait "onejar" ou "one-jar".