1

据我所知,apache karaf 的 dev:watch 命令应该有助于开发 osgi 包,这样我就不必在每次更改包的源代码时手动更新包。

我试过这个,一个简单的包,它只包含一个 Activator 类。我正在使用 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 版本,使用安装捆绑包也是不够的,osgi:install mvn:<groupID>/<artifactID>您还必须<version>在捆绑包 URL 中使用 : osgi:install mvn:<groupID>/<artifactID>/<version>,其中<version>对应于 pom.xml 中指定的版本标记。它必须是像“1.0-SNAPSHOT”这样的快照版本。

于 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(注意:unix 风格的正斜杠)后工作。

于 2016-10-19T11:15:08.273 回答