¿Cuál es el significado del tipo "paquete" en una dependencia de maven?

91

¿Cuál es el significado de "paquete", por ejemplo, en esta dependencia:

<dependency>
    <groupId>org.apache.abdera</groupId>
    <artifactId>abdera-core</artifactId>
    <version>1.1.2</version>
    <type>bundle</type>
    <scope>compile</scope>
</dependency>
Zeemee
fuente

Respuestas:

83

Este tipo de artefacto es un paquete OSGi, que normalmente se produce mediante el complemento maven-bundle-plugin que forma parte de Apache Felix .

El complemento trata todas las clases disponibles para su módulo (las propias clases del módulo, las clases proporcionadas por dependencias, otras clases en la ruta de clases) como un conjunto gigante, luego le permite seleccionar un subconjunto de esas clases para agrupar en un frasco. También crea la información de manifiesto necesaria para convertir el artefacto en un paquete OSGi.

Entonces, el artefacto que está extrayendo al usar esta dependencia es un frasco, sin embargo, es un frasco construido al elegir un subconjunto de un conjunto mucho más grande de clases, no solo las clases que se definieron dentro del módulo abdera-core.

Si echas un vistazo al pom del proyecto abdera , verás la maven-bundle-pluginconfiguración que te dará una idea de qué clases se han agregado al paquete y cuáles se han retenido.

joelittlejohn
fuente