Costruire un jar grasso usando Maven

Ho un codice base che voglio distribuire come jar. Ha anche dipendenza da giare esterne, che voglio raggruppare nel jar finale.

Ho sentito che questo può essere fatto usando maven-assembly-plug-in , ma non capisco come. Qualcuno potrebbe indicarmi alcuni esempi.

In questo momento, sto usando un barattolo di grasso per impacchettare il barattolo finale. Voglio ottenere la stessa cosa usando Maven.

Aggiungi il seguente plug-in al tuo pom.xml L’ultima versione può essere trovata su 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       

Dopo aver configurato questo plug-in, il mvn package esecuzione produrrà due jar: uno contenente solo le classi del progetto e un secondo jar con tutte le dipendenze con il suffisso “-jar-with-dependencies”.

se si desidera impostare correttamente il classpath in fase di esecuzione, aggiungere anche il seguente plug-in

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

Puoi usare il plugin maven-shade-plugin .

Dopo aver configurato il plug-in della sfumatura nella build, il comando mvn package creerà un singolo jar con tutte le dipendenze unite in esso.

Forse vuoi maven-shade-plugin , raggruppare le dipendenze, minimizzare il codice inutilizzato e hide dipendenze esterne per evitare conflitti.

    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         

Riferimenti:

in realtà, aggiungendo il

   true com.some.pkg com.MainClass   

dichiarazione a maven-jar-plugin non aggiunge per me la voce principale della class al file manifest. Ho dovuto aggiungerlo al plugin maven-assembly per ottenerlo nel manifest

È ansible utilizzare il plugin onejar-maven per la confezione. Fondamentalmente, assembla il tuo progetto e le sue dipendenze in un unico contenitore, incluso non solo il tuo file jar di progetto, ma anche tutte le dipendenze esterne come un “barattolo di barattoli”, ad esempio

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

Nota 1: le opzioni di configurazione sono disponibili nella home page del progetto.

Nota 2: per un motivo o per l’altro, il progetto onejar-maven-plugin non è pubblicato su Maven Central. Tuttavia jolira.com tiene traccia del progetto originale e lo pubblica con groupId com.jolira .

Un’alternativa è usare il plugin ombreggiatura Maven per build un uber-jar .

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