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 的文章:
我正在使用 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 的文章: