apache karaf dev:watch命令不起作用

时间:2012-07-14 14:04:39

标签: java osgi bundle watch

据我所知,apache karaf的dev:watch命令应该有助于开发osgi bundle,这样我每次更改bundle的源代码时都不需要手动更新bundle ... / p>

我尝试了这个,只有一个简单的包,它只包含一个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()并使用mvn clean install构建了我的重建捆绑包。

捆绑包现在不应该更新吗?当我看一下karaf控制台时,我看到没有变化,直到我使用osgi:update手动更新捆绑包(我想避免,使用dev:watch)...我在这里做错了什么?

3 个答案:

答案 0 :(得分:3)

几个小时后,我发现了错误的来源。 即使捆绑包已经是SNAPSHOT版本,使用osgi:install mvn:<groupID>/<artifactID>安装捆绑包也是不够的,但您必须在捆绑包URL中使用<version>osgi:install mvn:<groupID>/<artifactID>/<version>,其中<version> 1}}对应于pom.xml中指定的版本标记。它必须是像“1.0-SNAPSHOT”这样的快照版本。

答案 1 :(得分:0)

maven版本是SNAPSHOT吗? dev:watch仅适用于快照,因为固定版本不会发生变化。

答案 2 :(得分:0)

我遇到了同样的问题。几个小时后,我发现了另一个错误来源。

我在Windows上工作,我的settings.xml中有<localRepository>D:\m2repo</localRepository>

Maven没关系,但BundleWatcher没有。 在更改为D:/m2repo之后工作(通知:unix样式的正斜杠)。