Non è solo un caso di aggiornamento di META-INF/MANIFEST.MF a un progetto di osgi plug-in (se non lo è già?). Dovrebbe assomigliare a:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: My-plugin
Bundle-SymbolicName: com.mycompany.mypluginname
Bundle-Version: 1.0.0
Bundle-Vendor: MyCompany
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Service-Component:
Import-Package: org.apache.log4j;version="1.2.14" (, separated etc)
Export-Package: com.mycompany.mypluginname.myapipackage;version="1.0.0"
E quindi omettere il pacchetto .internal. La piattaforma dovrebbe fare il resto.
A proposito, si utilizza il pacchetto di importazione: in qualsiasi bundle dipendente, plug-in, ecc, piuttosto che in base al jar/progetto (che è il vecchio modo sucky che non funziona - come sei individuazione).
Questo ti dà un enorme disaccoppiamento delle dipendenze del codice. Se decidi che il codice del tuo plug-in dovrebbe appartenere a un altro jar/bundle, devi solo spostare singoli pacchetti e fare in modo che il nuovo bundle/plug-in lo esporti. Poiché i bundle client importano semplicemente il pacchetto da "the cloud" (il cloud è la piattaforma OSGi), è possibile spostare il codice molto più liberamente.
Nota: Come menzionato nei commenti, non è necessario eseguire le app in OSGi per ottenere questo "vantaggio". Eclipse può compilare il codice sotto le restrizioni del pacchetto OSGi e il tuo build/server può essere eseguito nel "mondo non protetto". per esempio. i manifesti di OSGi non impongono nulla a terze parti (che desiderano utilizzare .internal), ma forniscono "notifiche" e restrizioni a coloro che li desiderano.
Questo è quello che faccio adesso, anche se alcuni dei miei plugin contengono anche il codice che uso nel codice del server, non via OGSI. – Uri
Non c'è niente che ti impedisce di configurare eclipse per utilizzare le informazioni OSGi per lo sviluppo del server. Il percorso di classe di runtime e gli script di compilazione possono rimanere come sono. per esempio. aggiungi manifesti OSGi per i tuoi vasi cliente. In realtà non fa male nulla ... – Stephen