2011-12-17 9 views
12

Sono interessato a come distribuire un'applicazione Java con molte dipendenze (specificata in pom.xml in Maven).Creazione di un'applicazione Java che scarica le proprie dipendenze

Ovviamente sarebbe possibile semplicemente impacchettare tutto in un unico grande file .jar. Tuttavia ciò sembra uno spreco, dal momento che un aggiornamento dell'applicazione richiederebbe l'invio di una nuova copia di tutte le dipendenze.

Quindi sto cercando un modo di distribuire l'applicazione che fa il seguente:

  • include solo l'applicazione principale nel file .jar principale
  • Download dipendenze come necessari quando il file .jar è gestito
  • Mantiene copie delle dipendenze a livello locale, in modo che se si distribuisce un aggiornamento dell'applicazione delle dipendenze non hanno bisogno di essere scaricati di nuovo

Qual è il miglior wa y di raggiungere questo?

+0

Prima che qualcuno lo suggerisca, OSGi sembra essere eccessivo, ma credo che abbia queste belle funzionalità di scaricare e aggiornare i pacchetti al volo, anche senza riavviare. –

+0

Questo non ti aiuta in questo momento, ma ho pensato di menzionare che c'è del lavoro in corso per risolvere questo problema a livello di JDK stesso. Si chiama Project Jigsaw ed è attualmente programmato per essere incluso in JDK 8. Per ulteriori informazioni, visitare: http://openjdk.java.net/projects/jigsaw/ – ivantod

+0

@ivantod: tre anni dopo. JDK 8 è fuori. Ancora nessun Jigsaw. Ancora sulla tabella di marcia, però. – Thilo

risposta

2

è possibile distribuire il file utilizzando lo web start technology (ovvero distribuire un file jnlp). Credo che questo gestirà la maggior parte di questa funzionalità per te, inclusa l'aggiornabilità.

+0

Vedere anche [Java Web Start] (http: // stackoverflow .com/tags/java-web-start/info) informazioni sui tag, che includono il link sopra e altri 8, oltre a una descrizione 'sviluppatore' di JWS. –

3

Si può semplicemente usare Maven, con qualcosa come descritto a Maven Run Project?

Ecco come ho installato alcune delle mie applicazioni all'interno della mia rete. Non ho mai avuto bisogno di preoccuparmi di fare scherzi con i percorsi di classe o di scaricare/fornire dipendenze per i programmi di installazione come questa per molto tempo. Questo approccio soddisfa anche tutti i tuoi criteri.

+0

sì, e possibilmente un wrapper attorno a Maven in modo che gli utenti non debbano occuparsene, spingendo gli aggiornamenti cambierebbe solo pochi poms e l'esperto si prenderà cura di tutto il resto. – milan

Problemi correlati