В чем смысл типа "расслоение" в зависимости от maven?

В чем смысл "расслоения", например, в этой зависимости:

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

Ответ 1

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

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

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

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