1

私が読んだ限りでは、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 を使用して回避したい) を使用して手動でバンドルを更新するまで、変更が表示されません...

ここで何が間違っていますか?

4

3 に答える 3

5

数時間後、エラーの原因が見つかりました。バンドルが既に SNAPSHOT バージョンである場合でも、を使用してバンドルをインストールするだけでは不十分ですが、バンドル URL で もosgi:install mvn:<groupID>/<artifactID>使用する必要があります。ここで、pom.xml で指定されたバージョン タグに対応します。「1.0-SNAPSHOT」のようなスナップショット バージョンである必要があります。<version>osgi:install mvn:<groupID>/<artifactID>/<version><version>

于 2012-07-16T10:24:45.617 に答える
0

Maven バージョンは SNAPSHOT ですか? dev:watch は、固定バージョンが変更されることが想定されていないため、スナップショットに対してのみ機能します。

于 2012-07-14T18:33:27.343 に答える
0

私は同じ問題に遭遇しました。数時間後、別のエラーの原因が見つかりました。

私はWindowsで作業しており<localRepository>D:\m2repo</localRepository>、settings.xmlの中にありました

Maven はそれで問題ありませんでしたが、BundleWatcher はそうではありません。D:/m2repo(nottice: unix スタイルのスラッシュ)に変更した後に動作しました。

于 2016-10-19T11:15:08.273 に答える