【问题标题】:fabric:profile-refresh and fabric:watch doesn't work with Fuse 6.3fabric:profile-refresh 和 fabric:watch 不适用于 Fuse 6.3
【发布时间】:2017-09-05 05:15:39
【问题描述】:

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

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

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

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

有人可以帮忙吗?

【问题讨论】:

  • 以下是我在io.fabric8.agent.properties中的配置org.ops4j.pax.url.mvn.repositories = <remote-repository>org.ops4j.pax.url.mvn.globalUpdatePolicy = always
  • 那些是哪种工件? SNAPSHOT 还是已发布的?
  • 这些只是简单的 OSGI 包和其他端点
  • 快照或已发布的?
  • 我的 osgi 包只发布了。

标签: redhat apache-karaf jbossfuse fabric8


【解决方案1】:

简短回答: 如果您的捆绑包不是 SNAPSHOT,则不会尝试获取“较新”的发布版本。对于 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/repositoryorg.ops4j.pax.url.mvn PID 中有一个名为 org.ops4j.pax.url.mvn.updateReleases 的特殊选项,允许您设置 非规范 Maven 行为以实际更新非 SNAPSHOT。

在织物模式下(您正在使用的)它有点复杂。

io.fabric8.agent PID 和org.ops4j.pax.url.mvn.* 属性中有maven resolver 的fabric-agent 配置-它们的含义与独立模式下的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 的文章:

【讨论】:

  • 是的。有道理。感谢您分享这些宝贵的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 2020-06-16
  • 2015-07-20
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 2021-07-25
相关资源
最近更新 更多