2012-04-26 9 views
5

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?

+1

Perché non semplicemente distribuire i propri jar necessari come pacchetti e aggiungere dipendenze appropriate al proprio anziché a incorporare. – Robin

risposta

5

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.