我正在使用Jboss Fuse 6.3。我创建了一个带有2个子容器的结构环境。我已经为一个容器分配了一个测试配置文件。我正在尝试刷新我的个人资料,因为我必须更新一些属于我的测试配置文件的软件包。
为此,我登录到Fabric控制台并执行 fabric:profile-refresh test-profile
但是,当我看到捆绑包的标题 Bnd-LastModified 时,它似乎没有更新,仅引用旧标题。
我尝试使用 fabric:watch * 命令,但没有运气。
有人可以帮忙吗?
答案 0 :(得分:2)
简短回答: 如果您的捆绑包不是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/repository
中。 org.ops4j.pax.url.mvn
PID中有一个名为org.ops4j.pax.url.mvn.updateReleases
的特殊选项,允许您设置非规范 Maven行为以实际更新非SNAPSHOT。
在面料模式(您正在使用)中,它有点复杂。
在io.fabric8.agent
PID和org.ops4j.pax.url.mvn.*
属性中有maven解析器的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的文章: