0

開発中に、バンドル内の特定のファイルのコンテンツを変更し、再コンパイル/再バンドル/バンドルの再インストールなしで、変更されたファイルのコンテンツをアプリケーションで表示できるようにする必要があります。ファイルはBundle.getEntry()、アプリケーションがコンテンツを必要とするたびに読み取られます。

Eclipse 環境から起動された OSGi フレームワークはプロジェクト フォルダーをアンパックされたバンドルとして扱うため、Eclipse PDE と Equinox を使用すると非常に簡単です。プロジェクト フォルダー内のファイルの変更は、アプリケーションがリソース コンテンツを読み取るたびに反映されます。

私が正しく理解していれば、リソースの変更が検出されると、bndtools は常にバンドルを再パッケージ化します。しかし、何百ものリソース ファイルを含むプロジェクトの場合、時間がかかりすぎます。Eclipse PDE と同様の動作を実現することは可能ですか? できればApache Felixで?このような機能が必要なのは、開発/デバッグ中、およびアプリケーションが IDE から起動された場合のみです。本番環境でリソースが変更されることはありません。

具体的に言うと、私たちのアプリケーションには、いくつかの CSS にコンパイルされた LESS ファイルがたくさんあります。CSS は、LESS ファイルが変更された直後に生成されます。これは、gulp と node.js によって実現されます。ページがリロードされたときに、変更された CSS ファイルを (ほぼ) すぐに確認する必要があります。OSGi HTTP サービスを使用していないことに注意してください。

4

2 に答える 2

0

バンドル内のリソースを使用して開発したアプリケーションがいくつかあり、それは正常に動作します。(このモデルを使用するOSGi enRouteを参照してください。) バンドルがそれほど大きくない限り、1 秒未満でビルドされます。したがって、コード/リソースをより小さな複数のモジュールに分割できるかどうかを確認することをお勧めします。小さいほど、ビルドが速くなります。

これが本当に問題であり、これが少し必死の試みであると私が思うなら、もちろんgetEntry、ファイル システムも調べるように呼び出すコードを変更することができます。開発モード (config admin で設定) では、そこから取得できます。

于 2016-08-01T09:39:27.787 に答える