2012-02-16 12 views
10

Ho una serie di OSGi bundle essere costruito usando Maven e mi chiedevo se esiste un plugin Maven disponibili che mi permette di fare quanto segue:Creazione di un'applicazione OSGi completo di Felix e Maven

  1. Specificare il set di bundle da includere in una distribuzione e/o specificare un singolo bundle e risolvere le dipendenze.
  2. Costruire una distribuzione completa del framework. Quello che voglio dire è un singolo file zip contenente tutti i bundle necessari, oltre alla struttura di directory corretta per felix in modo che l'utente possa semplicemente decomprimere il file e digitare "java -jar bin/felix.jar".

Ho fatto un po 'di ricerca su Google e non ho trovato nulla di molto promettente a parte l'appassionatore. Qualcuno di voi ha mai trovato una buona soluzione?

Aggiornamento Ecco un'illustrazione di ciò che sto cercando di realizzare.

example-parent\ 
       bundle-one 
       bundle-two 
       bundle-three 
       assembly-one 
       assembly-two 

Dove assembly-one includerebbero bundle-one e bundle-two e assembly-two includerebbe bundle-two e bundle-three o qualsiasi loro combinazione. Poi, quando costruisci il tuo progetto, otterrai due file zip, uno per lo assembly-one e uno per lo assembly-two che conterrà i pacchetti appropriati in un'installazione felix indipendente. Ad esempio:

assembly-one.zip\ 
       bin\felix.jar 
       bundle\bundle-one, bundle-two, plus bare min felix bundles 
       conf\any configuration files I need 

Speriamo che fornisca un po 'più di informazioni su ciò che sto cercando di realizzare. Immagino che questo è simile a come Eclipse fa un feature.xml, ma ovviamente non usa Eclipse.

risposta

3

Il suggerimento di Fred di utilizzare il plug-in dell'assieme per impacchettare una distribuzione autonoma che può essere compresso è buona. Se stai cercando un esempio di come funzionerebbero i file di build, l'origine di esempio del blog Apache Aries utilizza i bundle Maven e i plugin di assemblaggio.

Un altro approccio è creare artefatti dell'applicazione. Non esiste ancora un unico standard OSGi (ancora), ma diversi progetti forniscono un modo per raggruppare i bundle in super-bundle. Questo non è esattamente come descritto dagli assembly, dal momento che il framework OSGi non è incluso, ma è simile a Eclipse feature.xmls. Dai un'occhiata alle applicazioni eba (enterprise bundle archive) di Apache Aries, ai file di piano Virgo o alle funzionalità di Karaf. Nella maggior parte di questi bundle si ottiene un archivio che include alcuni pacchetti e/o un file di metadati che descrive i contenuti dell'applicazione. I pacchetti che non sono inclusi nell'archivio possono essere forniti da un repository. Per Aries, esiste anche una confezione di eba maven che genererà l'archivio .ba contenente il file APPLICATION.MF e i bundle inclusi.

Abbiamo qualcosa in più nel Capitolo 4 di Enterprise OSGi in Action (http://www.manning.com/enterpriseosgiinaction), o un google veloce per eba, piano Virgo o karaf dovrebbe trovarti molto di più. Lo svantaggio per il tuo caso d'uso è che le applicazioni dovrebbero essere implementate in un runtime con la tecnologia appropriata preinstallata, poiché nessuna è OSGi principale.

Un altro progetto da esaminare per semplificare la distribuzione è l'installazione di file Felix. Ciò consente di rilasciare i bundle in una directory monitorata, che salva la necessità di scrivere i file di configurazione.

6

Il plug-in Sling Launchpad [1] crea un file jar eseguibile o un file war che incorpora il framework OSGi e un elenco personalizzabile di bundle, probabilmente è quello che ti serve. Con questo non è nemmeno necessario decomprimere il file jar generato, ma è sufficiente avviarlo.

[1] http://sling.apache.org/site/maven-launchpad-plugin.html

0

Se si utilizza OSGi v4 + e costruire con Maven, utilizzare pax-ops4j. È molto comodo da usare e rende lo sviluppo OSGi un gioco da ragazzi.

+4

Puoi spiegare di più su come impacchettare un'intera applicazione OSGi oltre a "usare pax-ops4j"? – oconnor0

Problemi correlati