Construire un gros pot en utilisant maven

J’ai une base de code que je veux dissortingbuer comme jar. Il dépend également des jars externes, que je veux regrouper dans le jar final.

J’ai entendu dire que cela pouvait être fait en utilisant maven-assembly-plug-in , mais je ne comprends pas comment. Quelqu’un pourrait-il m’indiquer quelques exemples?

En ce moment, j’utilise un bac à graisse pour regrouper le pot final. Je veux réaliser la même chose en utilisant maven.

Ajoutez le plugin suivant à votre pom.xml La dernière version peut être trouvée à https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-assembly-plugin

  ...    org.apache.maven.plugins maven-assembly-plugin CHOOSE LATEST VERSION HERE   jar-with-dependencies     assemble-all package  single       

Après avoir configuré ce plug-in, l’exécution de mvn package produira deux jars: un contenant uniquement les classes de projet et un second fichier jar contenant toutes les dépendances avec le suffixe “-jar-with-dependencies”.

si vous voulez une configuration correcte du classpath à l’exécution, ajoutez également le plug-in suivant

   org.apache.maven.plugins maven-jar-plugin    true fully.qualified.MainClass     

Vous pouvez utiliser le plugin maven-shade-plugin .

Après avoir configuré le plug-in dans votre build, le mvn package commande créera un seul jar avec toutes les dépendances fusionnées.

Peut-être que vous voulez maven-shade-plugin , regrouper les dépendances, minimiser le code inutilisé et masquer les dépendances externes pour éviter les conflits.

    org.apache.maven.plugins maven-shade-plugin 3.1.1   package  shade   true true  ${java.io.tmpdir}/dependency-reduced-pom.xml    com.acme.coyote hidden.coyote         

Les références:

en fait, en ajoutant le

   true com.some.pkg com.MainClass   

déclaration à maven-jar-plugin n’ajoute pas l’entrée de classe principale au fichier manifeste pour moi. Je devais l’append au plugin maven-assembly afin d’obtenir cela dans le manifeste

Vous pouvez utiliser le plugin onejar-maven pour le packaging. Fondamentalement, il assemble votre projet et ses dépendances en un seul jar, y compris non seulement votre fichier JAR de projet, mais aussi toutes les dépendances externes en tant que “jar of jars”, par exemple

    com.jolira onejar-maven-plugin 1.4.4    one-jar       

Note 1: Les options de configuration sont disponibles sur la page d’accueil du projet.

Note 2: Pour une raison ou pour une autre, le projet onejar-maven-plugin n’est pas publié sur Maven Central. Cependant, jolira.com suit le projet original et le publie avec le groupId com.jolira .

Une alternative consiste à utiliser le plugin maven shade pour créer un uber-jar .

  org.apache.maven.plugins maven-shade-plugin  Your Version Here       package  shade