2010-10-06 2 views

risposta

8

Prima di tutto, chiediti se hai davvero un buon motivo per impacchettare la tua applicazione e tutte le sue dipendenze in un singolo barattolo. Non ho trovato molte buone ragioni per questo (la maggior parte delle ragioni è legata alla follia della politica organizzativa o semplicemente all'ignoranza). La strada da percorrere è quello di mantenere le librerie nei loro vasi e fornitura di una .zip/.tar.gz che contiene tutte le librerie e la vostra applicazione sia con

  1. Un .jar eseguibile con la messa a punto classpath in modo adeguato in il file MANFIEST.MF
  2. un .bat/.sh script che richiama java e costruisce un percorso classe appropriato in base alle tue dipendenze

al contrario, utilizzare JNLP (meglio conosciuto come Java Web Start).

Se si desidera veramente che Maven raggruppa tutte le dipendenze e l'applicazione in un unico contenitore, ciò che si desidera utilizzare è lo "jar-with-dependencies" predefined assembly. Lo maven assembly plugin usage page mostra anche come questo potrebbe accadere.

+1

Grazie per la risposta. Fornisco un'API di servizi Web per un client, in realtà per semplificare la vita dei nostri client Java, vogliamo fornire un singolo .jar - possono anche generare il codice dal WSDL. Questo non è raro in alcuni servizi Web di Google. –

1

In realtà, i file .jar di nidificazione non sono possibili. Un barattolo non può contenere altri barattoli.

. I file .war e .ear possono contenere giare e questa è una buona soluzione se si consegna un'applicazione J2EE.

Se la tua app è solo J2SE, tuttavia, ti consiglio di guardare lo Maven Assembly plugin. Come suggerisce il nome, ti permette di creare una singola distribuzione binaria della tua build.

13

Se davvero si vuole andare questa direzione, ci sono diversi modi per farlo:

A seconda dei requisiti e dei vincoli esatti, è possibile che si preferisca l'uno o l'altro.

1

Puoi provare anche il plugin Maven Shade. http://maven.apache.org/plugins/maven-shade-plugin/

Le istruzioni generali su come utilizzare il plug-in Shade sono disponibili nella pagina di utilizzo. Alcuni casi d'uso più specifici sono descritti negli esempi forniti di seguito. Ultimo ma non meno importante, gli utenti occasionalmente forniscono ulteriori esempi, suggerimenti o errori nella pagina wiki del plugin.

Nel caso abbiate ancora domande sull'utilizzo del plugin, non esitate a contattare la mailing list dell'utente. I post della mailing list sono archiviati e potrebbero già contenere la risposta alla tua domanda come parte di un thread precedente. Quindi, vale anche la navigazione/ricerca nell'archivio della posta.

Se ritieni che al plug-in manchi una funzionalità o un difetto, puoi inserire una richiesta di funzione o una segnalazione di bug nel nostro tracker di problemi. Quando crei un nuovo problema, ti preghiamo di fornire una descrizione completa della tua preoccupazione. Soprattutto per risolvere bug è fondamentale che gli sviluppatori possano riprodurre il tuo problema. Per questo motivo, interi log di debug, POM o, più preferibilmente, piccoli progetti dimostrativi allegati al problema sono molto apprezzati. Naturalmente, anche le patch sono benvenute. I contributori possono controllare il progetto dal nostro repository sorgente e troveranno informazioni supplementari nella guida per aiutare con Maven.