2016-07-26 5 views
0

Während der Entwicklung zu ändern, die wir benötigen, um Inhalte von bestimmten Datei in Bündel ändern und geänderte Dateiinhalt in Anwendung sehen können, ohne neu zu kompilieren/Neubündelung/Bündel erneut zu installieren. Die Datei wird von Bundle.getEntry() jedes Mal gelesen, wenn die Anwendung ihren Inhalt benötigt.Wie Bündel Ressourcen on-the-fly in bndtools/felix Umwelt

Mit Eclipse PDE und Equinox ist es quit einfach, weil OSGi-Framework aus Eclipse-Umgebung Projektordner als entpackte Bundles behandelt. Änderungen an Dateien im Projektordner werden jedes Mal reflektiert, wenn die Anwendung Ressourceninhalt liest.

Wenn ich es richtig verstehe, bndtools repackages immer Bündel, wenn eine Veränderung in Ressource erkannt wird. Aber für ein Projekt mit Hunderten von Ressourcendateien benötigt es zu viel Zeit. Ist es möglich, ein ähnliches Verhalten wie in Eclipse PDE zu erreichen? Am liebsten in Apache Felix? Wir benötigen diese Funktionalität nur während der Entwicklung/des Debugging und nur dann, wenn die Anwendung von der IDE aus gestartet wird. Ressourcen werden in der Produktion niemals verändert.

konkret zu sein - in unserer Anwendung gibt es viele LESS-Dateien, die auf mehrere CSS kompiliert werden. CSS wird sofort generiert, nachdem eine der LESS-Dateien geändert wurde. Dies wird durch gulp und node.js erreicht. Wir müssen geänderte CSS-Dateien (fast) sofort sehen, wenn die Seite neu geladen wird. Beachten Sie, dass wir keinen OSGi HTTP-Dienst verwenden.

Antwort

0

Nein ist dies nicht möglich.

Wenn die Bndtools Verpackung zu lange dauert es kann ein Hinweis darauf sein, dass Ihr Paket zu groß ist und Sie sollten versuchen, mehr modularisieren.

+0

Angenommen, dass wir unsere Pakete neu anordnen, um weniger Zeit für das Packen zu benötigen. Immer noch - gibt es eine Option für "bundle hot replace" - d. H. Laufende Anwendung greift auf geänderte Dateien zu, ohne das Bundle neu zu installieren? – st33v3

+0

Wenn Sie in Bndtools starten, dann ist dies der Standard. Bundles werden bei jeder Änderung aktualisiert. –

0

Ich habe einige Anwendungen, bei denen ich mit Ressourcen in Bündeln zu entwickeln und das funktioniert gut. (Siehe OSGi enRoute, die dieses Modell verwendet.) Solange Bündel nicht so groß sind, wurden sie in Sekundenbruchteilen erstellt. Der beste Rat ist also zu sehen, ob Sie Ihren Code/Ihre Ressourcen in mehreren kleineren Modulen aufteilen können. Je kleiner, desto schneller baut es.

Wenn das wirklich ein Problem ist, und ich würde dies als ein bisschen ein verzweifelter Versuch sehen, könnten Sie natürlich den Code ändern, der getEntry aufruft, um auch auf das Dateisystem zu schauen. Im Entwicklungsmodus (über config admin gesetzt) ​​könnten Sie es dann von dort holen.