Jakie jest znaczenie typu „pakiet” w zależności maven?

91

Co oznacza „pakiet” np. W tej zależności:

<dependency>
    <groupId>org.apache.abdera</groupId>
    <artifactId>abdera-core</artifactId>
    <version>1.1.2</version>
    <type>bundle</type>
    <scope>compile</scope>
</dependency>
Zeemee
źródło

Odpowiedzi:

83

Ten rodzaj artefaktu to pakiet OSGi, zwykle tworzony przy użyciu wtyczki maven-bundle-plugin, która jest częścią Apache Felix .

Wtyczka traktuje wszystkie klasy dostępne dla twojego modułu (własne klasy modułu, klasy dostarczone przez zależności, inne klasy w ścieżce klas) jako jeden ogromny zestaw, a następnie pozwala wybrać podzbiór tych klas do spakowania w słoik. Tworzy również niezbędne informacje manifestu, aby artefakt stał się pakietem OSGi.

Zatem artefakt, który pobierasz, używając tej zależności, to jar, jednak jest to jar zbudowany przez wybranie podzbioru z dużo większego zestawu klas, a nie tylko klas, które zostały zdefiniowane w module abdera-core.

Jeśli spojrzysz na pom dla projektu abdera , zobaczysz maven-bundle-pluginkonfigurację, która da ci wyobrażenie o tym, które klasy zostały dodane do pakietu, a które zostały wstrzymane.

joelittlejohn
źródło