Qual é o significado do tipo “pacote” em uma dependência maven?

91

Qual é o significado de "pacote", por exemplo, nesta dependência:

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

Respostas:

83

Este tipo de artefato é um pacote OSGi, normalmente produzido usando o plugin maven-bundle que faz parte do Apache Felix .

O plugin trata todas as classes disponíveis para o seu módulo (as próprias classes do módulo, classes fornecidas por dependências, outras classes no classpath) como um conjunto gigante, então permite que você selecione um subconjunto dessas classes para agrupar em um jar. Ele também cria as informações de manifesto necessárias para tornar o artefato um pacote OSGi.

Portanto, o artefato que você está puxando usando essa dependência é um jar, no entanto, é um jar criado ao escolher um subconjunto de um conjunto muito maior de classes, não apenas as classes que foram definidas dentro do módulo abdera-core.

Se você der uma olhada no pom do projeto abdera, verá a maven-bundle-pluginconfiguração que lhe dará uma ideia de quais classes foram adicionadas ao pacote e quais foram retidas.

joelittlejohn
fonte