Suche
bnd-maven-plugin

Neues Maven-Plug-In für OSGi-Bundles verfügbar

Michael Thomas

Wie der Entwickler Neil Bartlett bekannt gegeben hat, steht ab sofort ein neues, auf bnd basierendes, Maven-Plug-In für die Erstellung von OSGi-Bundles zur Verfügung. Die schnörkellos „bnd-maven-plugin“ getaufte Erweiterung steht unter der Apache-Lizenz Version 2 und soll als Teil der weiter gefassten Projekte bnd und Bndtools weiterentwickelt werden.

Der Entstehungsgrund für das neue Plug-In ist Bartlett zufolge der Umstand, dass das für OSGi-Entwickler bereits zur Verfügung stehende maven-bundle-plugin von Apache Felix zwar ausgereift und stabil ist, jedoch einige Aspekte noch nicht oder nur unzureichend abdeckte.

bnd-maven-plugin > maven-bundle-plugin

So ersetzt das maven-bundle-plugin Mavens Default-Plug-In für JAR-Generierung, was u.a. zur Folge hat, dass für das Packaging „bundles“ statt „jars“ verwendet werden müssen. Output-Artefakte sind von nicht-OSGi-Anwendungen schwieriger zu gebrauchen. Entwickler verzichteten in der Vergangenheit deshalb häufig darauf, überhaupt OSGi-Bundles zu veröffentlichen. Das neue bnd-maven-plugin hingegen klinkt sich in Mavens process-classes-Phase ein und bereitet alle generierten Ressourcen im Verzeichnis target/classes vor, von wo aus sie das maven-jar-plugin automatisch einbindet.

Eine weitere Schwierigkeit des älteren maven-bundle-plugin besteht darin, dass es alle Packages, die nicht die Substrings „impl“ oder „internal“ enthalten, automatisch exportiert, was sowohl im Hinblick auf die Modularität problematisch ist, als auch im Widerspruch zu den Best Practices von OSGi steht. Das bnd-maven-plugin hingegen führt zwar alle Packages eines Projekts in einem Bundle zusammen. Standardmäßig wird jedoch nichts exportiert, Entwickler müssen alle Packages explizit angeben.

Außerdem lässt sich das maven-bundle-plugin nur schwer in inkrementellen Build-Umgebungen nutzen. Das bnd-maven-plugin hingegen soll Usern die schnellen Entwicklungszyklen ermöglichen, die sie von den Bndtools gewöhnt sind. So liegt beispielsweise der Inhalt des Verzeichnisses target/classes nach Abschluss der process-classes-Phase bereits als valides OSGi-Bundle vor. Last but not least soll die Entwicklung im Rahmen von bnd dafür sorgen, schneller von neuen bnd-Features profitieren zu können, sowie Features bereitzustellen, die sich direkt Maven-User richten.

Das Plug-In ist ab sofort über Maven Central oder jCenter verfügbar. Da bislang keine umfassende Dokumentation vorhanden ist, haben die Entwickler einige Beispielprojekte auf GitHub zur Verfügung gestellt, die den Einstieg erleichtern sollen.

Aufmacherbild: Close Up of A Bundle of Cables of A Suspension Bridge, Painted in Red Color von Shutterstock.com / Urheberrecht: LauraKick

Verwandte Themen:

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: