Quando creo un pacchetto, nel mio caso ho bisogno di incorporare alcuni jar (http-core e http-client). Usando Maven con il flex plugin ricevo una enorme lista di importazione, alcune delle cose che non mi servono. A partire da ora sto solo negando i pacchetti che non ho bisogno in <Import-Package>
, ma potrei anche usare Import-Package: resolution:=optional
. Mi chiedevo qual è il modo preferito e quali sono i vantaggi/svantaggi di entrambi gli approcci?Quando si incorpora il jar in bundle OSGi, ignora o risulterà facoltativo?
risposta
Sfortunatamente le persone includono un sacco di "belle parti da avere" (di solito chiamate utilità) che causano queste importazioni. Molto spesso i colpevoli sono separati dal codice principale che si desidera utilizzare. Se usi bndtools, puoi facilmente controllare come funzionano le dipendenze.
In bndtools e maven si usa bnd, e bnd rende molto facile copiare solo una parte del JAR nel proprio pacchetto. In questo modo puoi ridurre al minimo le dipendenze. Basta usare Private-Package per copiare i pacchetti di cui hai veramente bisogno e poi guardare le importazioni. Se importi qualcosa che ritieni necessario, aggiungilo a Private-Package (in bndtools puoi farlo con il drag and drop).
Alla fine si può probabilmente sbarazzarsi di molte importazioni non necessarie. Tuttavia, di solito ce ne sono alcuni. In tal caso decorarle con risoluzione: = optional nella dichiarazione Import-Package:
Import-Package: com.oracle.whatever; resolution:=optional, *
Non dimenticare l'* alla fine.
- 1. NoClassDefFoundError quando si esegue un bundle OSGI come jar classico
- 2. granularità moduli/bundle OSGi
- 3. OSGI Bundle vs vaso dipendenza
- 4. Aggiornamento bundle OSGi all'avvio
- 5. Avvio del bundle OSGi
- 6. Struttura pacchetto bundle OSGi
- 7. Installazione delle dipendenze OSGi con il plug-in maven-bundle
- 8. Stampa percorso classe bundle OSGI?
- 9. Incorporamento di JAR in un pacchetto OSGi in Eclipse
- 10. Errore CQ5 OSGi Bundle - org.json.simple - Impossibile risolvere
- 11. In che modo il framework OSGi imposta l'ID bundle?
- 12. accesso agli argomenti della riga di comando dal bundle OSGi
- 13. Includere risorse aggiuntive con i bundle OSGi
- 14. Come fare riferimento a un file incluso nel pacchetto OSGi quando si esegue java.io.File o FileInputStream
- 15. Problema con l'aggiornamento dei bundle osgi
- 16. Accedere alle risorse in un altro bundle di osgi?
- 17. Trova il bundle OSGI che esporta un pacchetto?
- 18. Utilizzo di JavaFX 2.2 nel bundle OSGi
- 19. Come utilizzare la libreria di estensione JSF come bundle OSGI
- 20. Come posso condividere librerie non OSGi tra bundle in un contenitore OSGi?
- 21. La migliore tecnica per ottenere il contesto del bundle OSGi?
- 22. EndInvoke() è facoltativo, di tipo facoltativo o sicuramente non facoltativo?
- 23. È possibile eseguire la manipolazione bytecode quando si utilizza OSGi?
- 24. Ignora valori Null quando si aggiorna il database in Hibernate
- 25. OSGi o Impala?
- 26. Come distribuire il bundle OSGi su repository Maven con deploy: deploy-file?
- 27. Utilizzo libreria non osgi in un'applicazione osgi
- 28. Ignora benchmark quando si utilizza stable/beta
- 29. perchè si usa osgi?
- 30. Impossibile avviare il bundle di osgi perché l'importazione non può essere risolta
Perché non semplicemente distribuire i propri jar necessari come pacchetti e aggiungere dipendenze appropriate al proprio anziché a incorporare. – Robin