私が読んだ限りでは、apache karaf の dev:watch コマンドは、そのバンドルのソースコードを変更するたびにバンドルを手動で更新する必要がないように、osgi バンドルの開発に役立つはずです。
Activator クラスのみで構成される 1 つの単純なバンドルを使用して、これを試しました。私は開発にmavenを使用しています。
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
public void start(BundleContext context) {
System.out.println("Starting the bundle");
}
public void stop(BundleContext context) {
System.out.println("Stopping the bundle");
}
}
karaf コマンドを使用してバンドルをインストールしました。
osgi:install mvn:my.groupId/my.artifactId
次に、使用してバンドルを開始しましたosgi:start <id of my bundle>
次に、このバンドルの監視を開始しましたusing dev:watch --start <id of my bundle>
Karaf は、それが私のバンドルを監視していると教えてくれました。
次に、ソース コードに変更を加えてバンドルを再構築すると、バンドルが自動的に更新されるかどうかをテストしたいと考えました。そこでSystem.out.println()'s
、アクティベーター クラスの を変更し、 を使用してバンドルを再構築しmvn clean install
ました。
バンドル自体が今更新されるべきではありませんか? karaf コンソールを見ると、osgi:update (dev:watch を使用して回避したい) を使用して手動でバンドルを更新するまで、変更が表示されません...
ここで何が間違っていますか?