Vraag Een complete OSGi-applicatie maken met Felix & Maven


Ik heb een set OSGi-bundels gebouwd met Maven en ik vroeg me af of er een Maven-plug-in beschikbaar is waarmee ik het volgende kan doen:

  1. Geef de reeks bundels op die u in een distributie wilt opnemen en / of geef een enkele bundel op en zorg dat de afhankelijkheden zijn opgelost.
  2. Bouw een volledige distributie van het raamwerk. Wat ik bedoel is een enkel zipbestand dat alle benodigde bundels bevat, plus de juiste mapstructuur voor felix zodat de gebruiker het bestand eenvoudigweg kan uitpakken en "java -jar bin / felix.jar" kan typen.

Ik deed wat Googelen en ik vond niets veelbelovend behalve appassembler. Heeft iemand ooit een goede oplossing bedacht?

Bijwerken Hier is een illustratie van wat ik probeer te bereiken.

example-parent\
               bundle-one
               bundle-two
               bundle-three
               assembly-one
               assembly-two

Waar assembly-one zou omvatten bundle-one en bundle-two en assembly-two zou omvatten bundle-two en bundle-three of elke combinatie daarvan. Wanneer u vervolgens uw project bouwt, krijgt u twee zip-bestanden, één voor assembly-one en één voor assembly-two die de juiste bundels zou bevatten in een self-contained felix install. Bijvoorbeeld:

assembly-one.zip\
                 bin\felix.jar
                 bundle\bundle-one, bundle-two, plus bare min felix bundles
                 conf\any configuration files I need

Hopelijk biedt dat wat meer informatie over wat ik probeer te bereiken. Ik denk dat dit een beetje lijkt op hoe Eclipse een feature.xml doet, maar natuurlijk niet met Eclipse.


10
2018-02-16 18:04


oorsprong


antwoorden:


De suggestie van Fred om de plug-in voor assemblage te gebruiken om een ​​op zichzelf staande distributie in te pakken die kan worden geritst, is een goede. Als u op zoek bent naar een voorbeeld van hoe de buildbestanden hiervoor zouden werken, gebruikt de voorbeeldbron Apache Aries-blog de maven-bundel en assembly-plug-ins.

Een andere benadering is om applicatie-artefacten te maken. Er is (nog) geen enkele OSGi-standaard voor, maar verschillende projecten bieden een manier om bundels samen te bundelen in super-bundels. Dit is niet helemaal hetzelfde als wat je beschrijft met je assembly's, omdat het OSGi-framework niet is opgenomen, maar het is vergelijkbaar met Eclipse feature.xmls. Bekijk de Apache Aries eba-archiefbestanden (Enterprise-bundelarchief), Virgo-planbestanden of Karaf-functies. In de meeste van deze bundelingen krijgt u een archief met een aantal bundels en / of een metadatabestand waarin de inhoud van de toepassing wordt beschreven. Bundels die niet zijn opgenomen in het archief, kunnen worden voorzien van een repository. Voor Aries is er ook een eba maven-verpakking die het .eba-archief zal genereren met daarin het APPLICATION.MF-bestand en de meegeleverde bundels.

We hebben hier wat meer over in Hoofdstuk 4 van Enterprise OSGi in Action (http://www.manning.com/enterpriseosgiinaction), of een snelle Google voor eba, Virgo-plan of karaf-functie zou je nog veel meer moeten vinden. Het nadeel voor uw gebruik is dat de applicaties in een runtime moeten worden geïmplementeerd met de juiste technologie vooraf geïnstalleerd, omdat geen daarvan kern OSGi is.

Een ander project om naar te kijken om de implementatie eenvoudiger te maken, is de installatie van Felix-bestanden. Hiermee kunt u bundels in een gecontroleerde map laten vallen, waardoor u geen configuratiebestanden hoeft te schrijven.


3
2018-02-17 02:24



De Sling Launchpad-plug-in [1] maakt een uitvoerbaar jar-bestand of een oorlogsbestand dat het OSGi-framework insluit en een aanpasbare lijst met bundels, dat is waarschijnlijk wat u nodig hebt. Daarmee hoeft u niet eens het gegenereerde jar-bestand uit te pakken, net beginnen is voldoende.

[1] http://sling.apache.org/site/maven-launchpad-plugin.html


6
2018-02-17 16:48



Misschien kan dit helpen voor wat u probeert te bereiken?

Ik weet het niet zeker, maar misschien is het het proberen waard?

http://maven.apache.org/plugins/maven-assembly-plugin/

Misschien ook het volgende ?:

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

Het vereist een beetje lezen / onderzoek, maar ik denk dat het nuttig kan zijn. Zo niet, dan begrijp ik je doel misschien niet goed en het spijt me.


2
2018-02-16 23:18



Als u OSGi v4 + gebruikt en met Maven bouwt, gebruik dan pax-ops4j. Het is erg handig in gebruik en maakt OSGi-ontwikkeling een fluitje van een cent.


0
2018-02-17 16:57