web-dev-qa-db-fra.com

Qu'est-ce qu'un pot uber?

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?

212
Ashay Batwal

Ü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.

312
paxdiablo

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:

55
Jean-Rémy Revy

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:

  1. Sans hachures: Décompressez tous les fichiers JAR, puis reconditionnez-les dans un seul JAR. Fonctionne avec le chargeur de classes par défaut de Java. Outils maven-Assembly-plugin
  2. Ombré: Identique à non ombré, mais renommez (c.-à-d. "Ombre") tous les paquets de toutes les dépendances. Fonctionne avec le chargeur de classes par défaut de Java. Évite certains (pas tous) conflits de versions de dépendance. Outils maven-shade-plugin
  3. JAR de JAR: Le fichier JAR final contient les autres fichiers JAR incorporés. Evite les conflits de versions de dépendance. Tous les fichiers de ressources sont préservés. Outils: exportateur de fichier JAR Eclipse

pour plus

45
Premraj

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

1
Rasheed