開発中に、バンドル内の特定のファイルの内容を変更し、アプリケーションの変更されたファイル内容を再コンパイル/バンドルの再インストールなしに変更する必要があります。アプリケーションがそのコンテンツを必要とするたびに、ファイルはBundle.getEntry()
によって読み取られます。バンドルリソースをbndtools/felix環境でオンザフライで変更する方法
Eclipse PDEとEquinoxを使用すると、Eclipse環境から起動されたOSGiフレームワークがプロジェクトフォルダをパッケージ化されていないバンドルとして扱うため、単純に終了します。プロジェクトフォルダ内のファイルの変更は、アプリケーションがリソースコンテンツを読み取るたびに反映されます。
正しく理解すれば、リソースの変更が検出されると、bndtoolsは常にバンドルを再パッケージ化します。しかし、何百ものリソースファイルを持つプロジェクトでは、時間がかかりすぎます。 Eclipse PDEと同様の動作が可能ですか?好ましくはApache Felixでは?このような機能が必要なのは、開発/デバッグ時のみで、IDEからアプリケーションを起動した場合のみです。本番環境ではリソースは決して変更されません。
具体的には、私たちのアプリケーションでは、いくつかのCSSにコンパイルされた多くのLESSファイルがあります。 CSSは、LESSファイルが変更された直後に生成されます。これはgulpとnode.jsによって実現されます。ページがリロードされたときにすぐに変更されたCSSファイルを(ほとんど)見る必要があります。 OSGi HTTPサービスを使用していないことに注意してください。
パッケージ化に要する時間が短くなるようにバンドルを並べ替えるとします。それでも - バンドルホットリプレースのオプションがあります - つまり、実行中のアプリケーションはバンドルを再インストールせずに変更されたファイルにアクセスしますか? – st33v3
Bndtoolsの中で起動すると、これがデフォルトです。バンドルは変更するたびに最新の状態に更新されます。 –