【发布时间】:2017-12-10 01:49:16
【问题描述】:
我有一个 Karaf 应用程序,在 .kar 文件中包含三个包,由 features.xml 指定。
当我在目标 VM 上部署已编译的 .kar(使用 maven 插件)时,主包会在 Karaf 中加载和更新,但似乎没有提取和部署依赖包(附加功能) - Karaf 尝试从 /system/ 存储库而不是 .kar 获取捆绑包。
部署在我的开发机器上工作,我怀疑依赖包是从本地 Maven 存储库中提取的,由于构建过程,该存储库是最新的。
目前要在目标机器上解决此问题,我必须将本地存储库复制到 [karaf.root]/system/ 文件夹,以便在热部署 .kar 时更新所有捆绑包。
有谁知道如何配置功能 .xml 以便从 .kar 中提取捆绑包,而不是 [最初] 从 /system 文件夹中提取? 我的 features.xml 文件是;
<features name="${project.artifactId}-${project.version}"
xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">
<feature name="${project.artifactId}" install="auto" version="${project.version}"
description="${project.description}">
<bundle dependency="true">mvn:com.google.code.gson/gson/${gson.version}</bundle>
<bundle>mvn:uk.co.company.product/product-common-api/${project.version}</bundle>
<bundle>mvn:uk.co.company.product/product-core-services/${project.version}</bundle>
<bundle>mvn:uk.co.company.product/product-scenario-exporter/${project.version}</bundle>
<feature prerequisite="true">camel-jetty</feature>
<feature prerequisite="true">webconsole</feature>
</feature>
我已经检查过,所需的包(即 common-api)包含在已编译的 kar 文件的存储库文件夹中。
【问题讨论】:
标签: java osgi apache-karaf apache-servicemix