Je lis la documentation de Maven et suis tombé sur le nom 'uber-jar'.
Qu'est-ce qu'un uber-jar et ses caractéristiques/avantages?
Über
est le mot allemand pour above
ou over
, comme dans une ligne d'un ancien hymne national: Deutschland, Deutschland, über alles
(Allemagne, par-dessus tout).
Ainsi, dans ce contexte, un uber-jar est un "over-jar", un niveau supérieur à un simple "jar", défini comme celui qui contient à la fois votre paquet et toutes ses dépendances en un seul Fichier JAR. On peut penser que le nom vient de la même stabilité que ultrageek, superman, l'hyperespace et les métadonnées, qui ont tous la même signification de "au-delà de la normale".
L'avantage est que vous pouvez distribuer votre uber-jar sans vous soucier de l'installation ou non de dépendances à la destination, car votre uber-jar en réalité a pas de dépendances.
Toutes les dépendances de vos propres affaires dans uber-jar sont aussi dans uber-jar. Comme toutes les dépendances de ces dépendances. Etc.
La définition de Paxdiablo est vraiment bonne.
De plus, considérez que la livraison d'un uber-jar est parfois très intéressante, si vous voulez vraiment distribuer un logiciel et que vous ne voulez pas que le client ait à télécharger des dépendances par lui-même. En revanche, si leur propre politique n'autorise pas l'utilisation d'une bibliothèque ou s'ils doivent lier des composants supplémentaires (slf4j, bibliothèques compatibles avec le système, bibliothèques archi-spéciales, ...), cela ne fera probablement qu'aggraver leurs difficultés .
Vous pouvez effectuer cela:
Une solution plus propre consiste à 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 ensemble OSGI. Il y a plein de bons tutoriels à ce sujet :)
Pour plus de configuration, veuillez lire les rubriques suivantes:
ubar jar est aussi appelé jarre grasse c'est-à-dire jar avec dépendances.
Il existe trois méthodes courantes pour construire un uber jar:
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 nécessaires à sa prise en charge, un référentiel de dépendances Maven interne, plus un shim pour bootstrap. voir ceci