2016-11-10 2 views
0

Ich bin relativ neu in der OSGi Welt und brauche Hilfe, um zu verstehen, wie man meinen Build-Prozess zu automatisieren. Ich habe mich mit der Verwendung von bndtool in Eclipse vertraut gemacht und gelernt, Abhängigkeiten aufzulösen, auszuführen, zu testen, zu debuggen und ein eigenständiges Jar zu generieren. Ich habe auch das Grund- und Maven-Tutorial durchgesehen, das auf der offiziellen OSGi-Site veröffentlicht wurde. Mein Problem ist, wie ich meine Builds automatisiere! Also, sagen wir, ich habe den Code in SVN. Ich muss in der Lage sein, den Code auszuchecken und dann ein Build-Skript/Tool auszuführen, um meine Bundles zu generieren, die ich dann mit Felix oder Karaf bereitstellen kann. Das offizielle Maven-basierte Tutorial (mit OSGi enRoute) zeigt nur, wie man ein Standalone-Glas erzeugt, an dem ich nicht interessiert bin; Ich muss Bündel generieren. Ich lese über das Maven Bundle Plugin, aber ich denke, wenn ich es benutze, werde ich den ganzen Luxus verlieren, den die UI-basierten bndtools mit Eclipse bieten. Vielen Dank für Ihre Hilfe!Wie bndtools Builds zu automatisieren ist

Antwort

1

Wenn Sie die Maven Build mit bndtools verwenden, dann verlieren Sie tatsächlich einige der Vorteile. Ich habe ein Beispiel für ein vollständiges Projekt mit dem Maven Build. Siehe osgi-chat. Es verwendet das bnd-maven-plugin zum Erstellen der Bundles, aber Sie können auch das maven-bundle-plugin verwenden. In beiden Fällen verwenden Sie die Standard-m2e-Unterstützung in Eclipse. Bndtools ist dann nur an der Auflösung der Bündel und der Erstellung des ausführbaren Jars beteiligt.

Bei vielen Projekten in der Apache-Community verwenden wir einen reinen Maven-Ansatz. Es ist der bewährte Weg, um auf Apache Karaf zu implementieren. Wenn Sie nach Karaf bereitstellen möchten, hilft bndtools nicht viel, da Karaf-Funktionen nicht erstellt werden können.

Wenn Sie die gesamte IDE-Unterstützung von bndtools möchten, verwenden Sie ein natives bndtools-Build mit einem bndtools-Arbeitsbereich (cnf dir) und verwenden Sie den bereitgestellten buildle-Build.

0

Bndtools kommt mit einem Gradle-Plugin, mit dem Sie eine ausführbare Jar exportieren können, aber wenn Sie nur den Build ausführen, werden die Jars im generierten Ordner jedes Projekts verfügbar sein.

können Sie die runbundles Aufgabe verwenden Bundles auf Basis einer .bndrun-Datei zu exportieren (dies funktioniert ähnlich die ausführbaren jar zu erzeugen, sondern erzeugt nur einen Ordner das Bündel enthält)

0

Als langjähriges Maven Benutzer und auch, weil ich plane karaf (jboss fusion) zu verwenden Ich folgte Christians Vorschlägen und verbrachte einige Zeit damit, das maven-bundle-plugin zu erkunden und das bnd-maven-plugin zu erkunden. Aus ersten Lesungen über bnd-maven-plugin, habe ich festgestellt, dass es einige Vorteile gegenüber dem Apache-Plugin hat (Befehle werden direkt von der bnd und nicht von der pom erhalten; schnellere Updates werden parallel zu den bnd-Updates erwartet). Eine Sache, die ich noch über dieses Plugin verstehen muss: Für welche OSGi Release-Version generiert es Bundles? Ich weiß, dass das maven-bundle-plugin nur für R4 generiert, laut der offiziellen Seite, was eine Einschränkung darstellt. Was ist mit bnd-maven-plugin? Noch eine Frage: Welche Plugins sind für die Generierung von Karaf Kars verfügbar und können mit dem bnd-bundle-plugin kombiniert werden? Vielen Dank für Ihre Geduld!

0

Ich habe einige Zeit damit verbracht, das bnd-maven-plugin zu erkunden. Dies ist der beste Weg, um Eclipse, das bnd-maven-plugin und bndtools zu mischen: 1. Verwenden Sie die bndtools, um die Anforderungen zu lösen und die Bundles innerhalb eines Frameworks innerhalb von Eclipse auszuführen. 2. Verwenden Sie das bnd-maven-plugin zum Erstellen der Bundles 3. Verwenden Sie das Plugin 'indexer' zum Generieren einer Indexdatei, die für die Abhängigkeitsauflösung von bndtools verwendet wird. Obwohl diese Methode das Ausführen der Bundles in Eclipse ermöglicht, ist jedes Mal eine 'mvn-Installation' erforderlich, da das bndtools-Plug-in nicht weiß, wie Abhängigkeiten vom Eclipse-Arbeitsbereich aufgelöst werden. Diese Methode macht es auch unmöglich, den Code in Eclipse zu debuggen. Gibt es eine bessere Alternative?

Dank

Verwandte Themen