2012-04-26 19 views
5

Cuando estoy creando un paquete, necesito incrustar algunos archivos (http-core y http-client) en mi caso. Al usar maven con el complemento flexible obtengo una enorme lista de importación, algunas de las cosas que no necesito. A partir de ahora estoy negando los paquetes que no necesito en <Import-Package>, pero también podría usar Import-Package: resolution:=optional. Me preguntaba cuál es la forma preferida y cuáles son las ventajas/desventajas de ambos enfoques.Al incrustar jar en paquete OSGi, ¿ignorar o resultado opcional?

+1

¿Por qué no simplemente despliega tus tarros necesarios también como paquetes y añades las dependencias apropiadas a las tuyas en lugar de incorporarlas? – Robin

Respuesta

5

Desafortunadamente, las personas incluyen muchas "partes agradables" (generalmente llamadas utils) que causan estas importaciones. Muy a menudo los culpables están separados del código central que desea usar. Si usa bndtools, puede inspeccionar fácilmente cómo se ejecutan las dependencias.

En bndtools y maven usa bnd, y bnd hace que sea muy fácil copiar solo parte del JAR en su paquete. De esa forma puedes minimizar las dependencias. Simplemente use Private-Package para copiar los paquetes que realmente necesita y luego mire las importaciones. Si importa algo que cree que necesita, agréguelo a Paquete Privado (en bndtools puede hacer esto arrastrando y soltando).

Al final es probable que pueda deshacerse de muchas importaciones innecesarias. Sin embargo, generalmente quedan algunos. En ese caso, decore con resolución: = opcional en la instrucción Import-Package:

Import-Package: com.oracle.whatever; resolution:=optional, * 

No olvide el * al final.

Cuestiones relacionadas