Что означает тип «пакет» в зависимости от maven?

91

Что означает «связка», например, в этой зависимости:

<dependency>
    <groupId>org.apache.abdera</groupId>
    <artifactId>abdera-core</artifactId>
    <version>1.1.2</version>
    <type>bundle</type>
    <scope>compile</scope>
</dependency>
Zeemee
источник

Ответы:

83

Этот вид артефактов представляет собой пакет OSGi, обычно создаваемый с помощью maven-bundle-plugin, который является частью Apache Felix .

Плагин обрабатывает все классы, доступные для вашего модуля (собственные классы модуля, классы, предоставляемые зависимостями, другие классы в пути к классам), как один гигантский набор, а затем позволяет вам выбрать подмножество этих классов для объединения в банку. Он также создает необходимую информацию манифеста, чтобы сделать артефакт пакетом OSGi.

Таким образом, артефакт, который вы втягиваете с помощью этой зависимости, представляет собой jar, однако это jar, созданный путем выбора подмножества из гораздо большего набора классов, а не только классов, которые были определены внутри модуля abdera-core.

Если вы посмотрите на pom для проекта abdera, вы увидите maven-bundle-pluginконфигурацию, которая даст вам представление о том, какие классы были добавлены в пакет, а какие были отложены.

Джоэлитлджон
источник