fabric:profile-refresh 和 fabric:watch 不适用于 Fuse 6.3

fabric:profile-refresh and fabric:watch doesn't work with Fuse 6.3

我正在使用 Jboss Fuse 6.3。我创建了一个包含 2 child 容器的结构环境。我已将一个测试配置文件分配给其中一个容器。我正在尝试刷新我的个人资料,因为我必须更新一些属于我的测试个人资料的捆绑包。

为此,我登录到 fabric 控制台并执行 fabric:profile-refresh test-profile

但是当我看到捆绑包的 header Bnd-LastModified 时,它似乎没有更新并且只引用旧的。

我也尝试使用 fabric:watch * 命令,但没有成功。

有人可以帮忙吗?

简答: 如果您的包是非 SNAPSHOT 包,则不会尝试获取 "newer" 已发布版本。对于 Maven,每个非 SNAPSHOT 都是不可变的。

更长的答案: 如果 我必须更新一些包 你的意思是 mvn clean install 新版本到你的 ~/.m2/repository,那么它应该被 Fuse 拾取 - 假设 ~/.m2/repository 是您的 默认存储库之一 - 请检查 org.ops4j.pax.url.mvn PID,org.ops4j.pax.url.mvn.defaultRepositories 属性.

但是,如果您希望 Fuse 从某个远程存储库(Nexus、Artifactory 等)下载更新版本的非 SNAPSHOT 工件,那么 本地存储库 中的一个版本是首选。默认情况下,在 Fuse 6.3 中,此 本地存储库 位于 $FUSE_HOME/data/repository 中。 org.ops4j.pax.url.mvn PID 中有一个名为 org.ops4j.pax.url.mvn.updateReleases 的特殊选项,它允许您设置 非规范 Maven 行为以实际更新非快照。

在结构模式(您正在使用的)中,它有点复杂。

io.fabric8.agent PID 和 org.ops4j.pax.url.mvn.* 属性中有 maven 解析器的 fabric-agent 配置 - 它们的含义与 standalone 中的 org.ops4j.pax.url.mvn PID 和 org.ops4j.pax.url.mvn.* 属性相同模式。

为了验证 Maven 解析的工作原理,您可以在 karaf 配置文件中取消注释这些日志设置:

# help with identification of maven-related problems with fabric-maven
#log4j.logger.org.eclipse.aether = TRACE
#log4j.logger.org.apache.http.headers = DEBUG
#log4j.logger.io.fabric8.maven.util = TRACE
#log4j.logger.io.fabric8.maven.url = TRACE
#log4j.logger.io.fabric8.agent.download = DEBUG

另请阅读我关于 pax-url-aether 和 Maven 的文章: