2010-07-18 19 views
8

Quali sono le best practice (e gli strumenti di abilitazione) per distribuire applicazioni standalone Java insieme a eventuali dipendenze di jar, file di configurazione e script di avvio richiesti?Distribuzione di file Java

Esistono plugin Maven che facilitano la pubblicazione di versioni binarie, in modo che gli utenti non debbano utilizzare Maven, ad esempio?

risposta

3

Per quanto riguarda la dipendenza, utilizzo solo lo maven dependency copy plugin e copio tutte le dipendenze in una cartella ./lib e fornisco uno script di avvio che utilizza lo class path wildcard (in questo modo è possibile modificare le dipendenze quanto si desidera e non avere per cambiare lo script di avvio). Per quanto riguarda i file di configurazione, l'ho inserito in una cartella ./config e lo includo di nuovo nel classpath della mia app nello script di avvio (il primo ammette solo che funzioni per> java 1.6).

Così, alla fine quasi tutta la mia applicazione ha la seguente struttura:

mystuff.jar launch.sh 
./lib 
./config 

Poi mi limiterò a comprimere il tutto e dare ai miei utenti. L'intero processo è probabilmente facile da automatizzare usando Maven, ma confesso che lo faccio a mano: p

Se preferisci e le licenze lo permettono, puoi anche raggruppare tutte le dipendenze in un singolo jar (con dipendenze espanse all'interno) utilizzando lo assembly plugin. Ciò tende a rendere il vaso ingombrante e offre agli utenti un'app aggiornata. più difficile. Inoltre ho avuto problemi con esso a causa di una sovrascrittura dei file di classe o qualcosa del genere, quindi mi limito personalmente alla cartella ./lib.

6

Esistono plugin Maven che facilitano la pubblicazione di versioni binarie, in modo che gli utenti non debbano utilizzare Maven, ad esempio?

Utilizzare lo Maven Assembly Plugin per creare una distribuzione binaria come zip/tar.gz/tar.bz2 del progetto. Questo plugin è estremamente flessibile - al prezzo di una certa complessità - e puoi fare quasi tutto ciò che vuoi. Quindi deploy (nel senso del buon senso) l'artefatto prodotto, caricarlo da qualche parte, ecc.

1

C'è launch4j, che, se riesci a farlo funzionare, unirà un'app Java in un eseguibile per la tua piattaforma.

1

Se la destinazione di distribuzione supporta i file RPM, suggerisco caldamente di indagare su rpm-maven-plugin. Consente di mappare facilmente le risorse utente del progetto, incluse le dipendenze, in un pacchetto RPM.

L'ho usato con grande successo nella distribuzione di applicazioni su scala media.

0

Dai uno sguardo allo Appassembler Maven Plugin. Si consiglia inoltre di combinarlo con lo Assembly Maven Plugin.

Utilizzare il plugin di appassembler per generare un set di "programmi" specificando i nomi eseguibili e le classi principali. Puoi anche averlo anteporre e creare una directory etc in cui puoi aggiungere i file di configurazione.

Se la generazione della directory con gli script di avvio e la directory dei file binari non è sufficiente, è possibile utilizzare il plug-in dell'assembly per copiare altri file (ad esempio i file di configurazione) nella directory appropriata e/o nel pacchetto applicazione in un archivio.

0

È possibile utilizzare formica o Maven script di Oracle:

http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm

È possibile che questo non solo compilare il codice e creare file jar, ma sarà anche possibile creare binario eseguibile (finestre di file EXE o file app Mac). Può anche creare programmi di installazione nativi. Inoltre, consente di includere JVM con la propria distribuzione in modo che l'uso finale non abbia bisogno di installare Java.

Problemi correlati