開発中に、バンドル内の特定のファイルのコンテンツを変更し、再コンパイル/再バンドル/バンドルの再インストールなしで、変更されたファイルのコンテンツをアプリケーションで表示できるようにする必要があります。ファイルはBundle.getEntry()
、アプリケーションがコンテンツを必要とするたびに読み取られます。
Eclipse 環境から起動された OSGi フレームワークはプロジェクト フォルダーをアンパックされたバンドルとして扱うため、Eclipse PDE と Equinox を使用すると非常に簡単です。プロジェクト フォルダー内のファイルの変更は、アプリケーションがリソース コンテンツを読み取るたびに反映されます。
私が正しく理解していれば、リソースの変更が検出されると、bndtools は常にバンドルを再パッケージ化します。しかし、何百ものリソース ファイルを含むプロジェクトの場合、時間がかかりすぎます。Eclipse PDE と同様の動作を実現することは可能ですか? できればApache Felixで?このような機能が必要なのは、開発/デバッグ中、およびアプリケーションが IDE から起動された場合のみです。本番環境でリソースが変更されることはありません。
具体的に言うと、私たちのアプリケーションには、いくつかの CSS にコンパイルされた LESS ファイルがたくさんあります。CSS は、LESS ファイルが変更された直後に生成されます。これは、gulp と node.js によって実現されます。ページがリロードされたときに、変更された CSS ファイルを (ほぼ) すぐに確認する必要があります。OSGi HTTP サービスを使用していないことに注意してください。